Retire expander_from_point

This commit is contained in:
Joel Holdsworth 2009-01-10 12:58:58 +00:00
parent baa88abad0
commit 27ffbd1875
2 changed files with 21 additions and 50 deletions

View file

@ -204,16 +204,29 @@ bool TimelineHeaderContainer::on_motion_notify_event (
GdkEventMotion* event)
{
REQUIRE(event != NULL);
// Are we hovering on an expander?
shared_ptr<timeline::Track> expander = expander_button_from_point(
// Hit test the rectangle
shared_ptr<timeline::Track> header =
timelineWidget.layoutHelper.header_from_point(
Gdk::Point(event->x, event->y));
if(expander != hoveringExpander)
{
hoveringExpander = expander;
queue_draw();
}
if(header)
{
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();
}
}
return Container::on_motion_notify_event(event);
}
@ -441,38 +454,6 @@ TimelineHeaderContainer::draw_header_decoration(
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>
TimelineHeaderContainer::get_expander_button_rectangle(
shared_ptr<Track> track)

View file

@ -165,16 +165,6 @@ private:
boost::shared_ptr<model::Track> model_track,
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
* button.