Fixed track drag raise behaviour
This commit is contained in:
parent
1be33426e4
commit
977cbf9e64
4 changed files with 26 additions and 38 deletions
|
|
@ -183,7 +183,7 @@ bool TimelineHeaderContainer::on_button_release_event (
|
|||
|
||||
// Has the user been dragging?
|
||||
if(layout.get_dragging_track())
|
||||
end_drag();
|
||||
layout.end_dragging_track();
|
||||
|
||||
return Container::on_button_release_event(event);
|
||||
}
|
||||
|
|
@ -404,38 +404,16 @@ void
|
|||
TimelineHeaderContainer::begin_drag()
|
||||
{
|
||||
TimelineLayoutHelper &layout = timelineWidget.layoutHelper;
|
||||
|
||||
shared_ptr<timeline::Track> dragging_track =
|
||||
layout.begin_dragging_track(mousePoint);
|
||||
ENSURE(dragging_track); // Something strange has happened if we
|
||||
// were somehow not hovering on a track
|
||||
layout.begin_dragging_track(mousePoint);
|
||||
|
||||
const TimelineLayoutHelper::TrackTree::pre_order_iterator node =
|
||||
layout.iterator_from_track(dragging_track->get_model_track());
|
||||
set_keep_above_recursive(node, true);
|
||||
// Raise all the header widgets so they float above the widgets not
|
||||
// being dragged
|
||||
raise_recursive(layout.get_dragging_track_iter());
|
||||
}
|
||||
|
||||
void
|
||||
TimelineHeaderContainer::end_drag()
|
||||
{
|
||||
TimelineLayoutHelper &layout = timelineWidget.layoutHelper;
|
||||
|
||||
shared_ptr<timeline::Track> dragging_track =
|
||||
layout.get_dragging_track();
|
||||
ENSURE(dragging_track); // Something strange has happened if we
|
||||
// were somehow not dragging on a track
|
||||
|
||||
const TimelineLayoutHelper::TrackTree::pre_order_iterator node =
|
||||
layout.iterator_from_track(dragging_track->get_model_track());
|
||||
set_keep_above_recursive(node, false);
|
||||
|
||||
layout.end_dragging_track();
|
||||
}
|
||||
|
||||
void
|
||||
TimelineHeaderContainer::set_keep_above_recursive(
|
||||
TimelineLayoutHelper::TrackTree::iterator_base node,
|
||||
const bool keep_above)
|
||||
TimelineHeaderContainer::raise_recursive(
|
||||
TimelineLayoutHelper::TrackTree::iterator_base node)
|
||||
{
|
||||
TimelineLayoutHelper::TrackTree::pre_order_iterator iter;
|
||||
|
||||
|
|
@ -450,13 +428,13 @@ TimelineHeaderContainer::set_keep_above_recursive(
|
|||
timeline_track->get_header_widget().get_window();
|
||||
ENSURE(window); // Something strange has happened if there was no
|
||||
// window
|
||||
window->set_keep_above(keep_above);
|
||||
window->raise();
|
||||
|
||||
for(iter = layout_tree.begin(node);
|
||||
iter != layout_tree.end(node);
|
||||
iter++)
|
||||
{
|
||||
set_keep_above_recursive(iter, keep_above);
|
||||
raise_recursive(iter);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -184,13 +184,15 @@ private:
|
|||
boost::shared_ptr<model::Track> model_track);
|
||||
|
||||
void begin_drag();
|
||||
|
||||
|
||||
void end_drag();
|
||||
|
||||
void set_keep_above_recursive(
|
||||
TimelineLayoutHelper::TrackTree::iterator_base node,
|
||||
const bool keep_above);
|
||||
|
||||
/**
|
||||
* Recusively raises all the header widget windows in a branch to the
|
||||
* top of the Z-order.
|
||||
* @param node The window of node's track header will be raised, as
|
||||
* well as all it's descendant nodes.
|
||||
**/
|
||||
void raise_recursive(
|
||||
TimelineLayoutHelper::TrackTree::iterator_base node);
|
||||
|
||||
/**
|
||||
* Begins, or continues a scroll slide at a given rate
|
||||
|
|
|
|||
|
|
@ -163,6 +163,12 @@ TimelineLayoutHelper::get_dragging_track() const
|
|||
return draggingTrack;
|
||||
}
|
||||
|
||||
TimelineLayoutHelper::TrackTree::pre_order_iterator
|
||||
TimelineLayoutHelper::get_dragging_track_iter() const
|
||||
{
|
||||
return draggingTrackIter;
|
||||
}
|
||||
|
||||
void
|
||||
TimelineLayoutHelper::drag_to_point(const Gdk::Point &point)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -134,6 +134,8 @@ public:
|
|||
|
||||
boost::shared_ptr<timeline::Track> get_dragging_track() const;
|
||||
|
||||
TrackTree::pre_order_iterator get_dragging_track_iter() const;
|
||||
|
||||
void drag_to_point(const Gdk::Point &point);
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Reference in a new issue