Retire expander_from_point
This commit is contained in:
parent
baa88abad0
commit
27ffbd1875
2 changed files with 21 additions and 50 deletions
|
|
@ -205,15 +205,28 @@ bool TimelineHeaderContainer::on_motion_notify_event (
|
||||||
{
|
{
|
||||||
REQUIRE(event != NULL);
|
REQUIRE(event != NULL);
|
||||||
|
|
||||||
// Are we hovering on an expander?
|
// Hit test the rectangle
|
||||||
shared_ptr<timeline::Track> expander = expander_button_from_point(
|
shared_ptr<timeline::Track> header =
|
||||||
|
timelineWidget.layoutHelper.header_from_point(
|
||||||
Gdk::Point(event->x, event->y));
|
Gdk::Point(event->x, event->y));
|
||||||
|
|
||||||
if(expander != hoveringExpander)
|
if(header)
|
||||||
{
|
{
|
||||||
hoveringExpander = expander;
|
const optional<Gdk::Rectangle> rect =
|
||||||
|
get_expander_button_rectangle(header);
|
||||||
|
|
||||||
|
REQUIRE(rect);
|
||||||
|
|
||||||
|
// Are we hovering on the expander?
|
||||||
|
if(event->x >= rect->get_x() &&
|
||||||
|
event->x < rect->get_x() + rect->get_width() &&
|
||||||
|
event->y >= rect->get_y() &&
|
||||||
|
event->y < rect->get_y() + rect->get_height())
|
||||||
|
{
|
||||||
|
hoveringExpander = header;
|
||||||
queue_draw();
|
queue_draw();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return Container::on_motion_notify_event(event);
|
return Container::on_motion_notify_event(event);
|
||||||
}
|
}
|
||||||
|
|
@ -441,38 +454,6 @@ TimelineHeaderContainer::draw_header_decoration(
|
||||||
timeline_track->get_expander_style());
|
timeline_track->get_expander_style());
|
||||||
}
|
}
|
||||||
|
|
||||||
shared_ptr<timeline::Track>
|
|
||||||
TimelineHeaderContainer::expander_button_from_point(
|
|
||||||
const Gdk::Point &point)
|
|
||||||
{
|
|
||||||
const TimelineLayoutHelper::TrackTree &layout_tree =
|
|
||||||
timelineWidget.layoutHelper.get_layout_tree();
|
|
||||||
|
|
||||||
TimelineLayoutHelper::TrackTree::pre_order_iterator iterator;
|
|
||||||
for(iterator = ++layout_tree.begin(); // ++ so we skip the sequence root
|
|
||||||
iterator != layout_tree.end();
|
|
||||||
iterator++)
|
|
||||||
{
|
|
||||||
const shared_ptr<timeline::Track> timeline_track =
|
|
||||||
lookup_timeline_track(*iterator);
|
|
||||||
|
|
||||||
// Hit test the rectangle
|
|
||||||
const optional<Gdk::Rectangle> rect =
|
|
||||||
get_expander_button_rectangle(timeline_track);
|
|
||||||
|
|
||||||
if(rect)
|
|
||||||
{
|
|
||||||
if(point.get_x() >= rect->get_x() &&
|
|
||||||
point.get_x() < rect->get_x() + rect->get_width() &&
|
|
||||||
point.get_y() >= rect->get_y() &&
|
|
||||||
point.get_y() < rect->get_y() + rect->get_height())
|
|
||||||
return timeline_track;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return shared_ptr<timeline::Track>();
|
|
||||||
}
|
|
||||||
|
|
||||||
const optional<Gdk::Rectangle>
|
const optional<Gdk::Rectangle>
|
||||||
TimelineHeaderContainer::get_expander_button_rectangle(
|
TimelineHeaderContainer::get_expander_button_rectangle(
|
||||||
shared_ptr<Track> track)
|
shared_ptr<Track> track)
|
||||||
|
|
|
||||||
|
|
@ -165,16 +165,6 @@ private:
|
||||||
boost::shared_ptr<model::Track> model_track,
|
boost::shared_ptr<model::Track> model_track,
|
||||||
const Gdk::Rectangle &clip_rect);
|
const Gdk::Rectangle &clip_rect);
|
||||||
|
|
||||||
/**
|
|
||||||
* Given a point, expander_button_from_point finds the track of the
|
|
||||||
* expand button that this point is hovering over, if there is one.
|
|
||||||
* @param point The window coordiates point to hit-test.
|
|
||||||
* @return Returns a pointer to the track whose expander button is
|
|
||||||
* being hovered over, or NULL if no button has been found.
|
|
||||||
**/
|
|
||||||
boost::shared_ptr<timeline::Track> expander_button_from_point(
|
|
||||||
const Gdk::Point &point);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the rectangular hit-target area of a track header's expander
|
* Gets the rectangular hit-target area of a track header's expander
|
||||||
* button.
|
* button.
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue