diff options
-rw-r--r-- | gtk2_ardour/editor_drag.cc | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/gtk2_ardour/editor_drag.cc b/gtk2_ardour/editor_drag.cc index 470a57ade2..f2bb65b695 100644 --- a/gtk2_ardour/editor_drag.cc +++ b/gtk2_ardour/editor_drag.cc @@ -756,6 +756,12 @@ RegionMotionDrag::y_movement_allowed (int delta_track, double delta_layer, int s return true; } +struct DraggingViewSorter { + bool operator() (const DraggingView& a, const DraggingView& b) { + return a.time_axis_view < b.time_axis_view; + } +}; + void RegionMotionDrag::motion (GdkEvent* event, bool first_move) { @@ -940,6 +946,14 @@ RegionMotionDrag::motion (GdkEvent* event, bool first_move) } } + if (first_move) { + /* sort views by time_axis. + * This retains track order in the dropzone, regardless + * of actual selection order + */ + _views.sort (DraggingViewSorter()); + } + for (list<DraggingView>::iterator i = _views.begin(); i != _views.end(); ++i) { RegionView* rv = i->view; |