fix drop-zone drops
authorRobin Gareus <robin@gareus.org>
Wed, 25 Mar 2015 11:11:49 +0000 (12:11 +0100)
committerRobin Gareus <robin@gareus.org>
Wed, 25 Mar 2015 11:11:49 +0000 (12:11 +0100)
There is no special ‘-1’ indicator any more.
i->time_axis_view is unbound to allow relative
positioning when dragging multiple regions.

gtk2_ardour/editor_drag.cc

index 6675b863160dde5549f11bd820b5cac8a0ce3fa0..bd65dd1b5567d85ecfb6675f6083e01c867f00a0 100644 (file)
@@ -1413,7 +1413,7 @@ RegionMoveDrag::finished_no_copy (
                        continue;
                }
 
-               if (i->time_axis_view < 0) {
+               if (i->time_axis_view < 0 || i->time_axis_view >= _time_axis_views.size()) {
                        /* dragged to drop zone */
 
                        PlaylistMapping::iterator pm;
@@ -1759,7 +1759,10 @@ RegionInsertDrag::RegionInsertDrag (Editor* e, boost::shared_ptr<Region> r, Rout
 void
 RegionInsertDrag::finished (GdkEvent *, bool)
 {
-       RouteTimeAxisView* dest_rtv = dynamic_cast<RouteTimeAxisView*> (_time_axis_views[_views.front().time_axis_view]);
+       int pos = _views.front().time_axis_view;
+       assert(pos >= 0 && pos < _time_axis_views.size());
+
+       RouteTimeAxisView* dest_rtv = dynamic_cast<RouteTimeAxisView*> (_time_axis_views[pos]);
 
        _primary->get_canvas_group()->reparent (dest_rtv->view()->canvas_item());
        _primary->get_canvas_group()->set_y_position (0);