From fb83e8ef14ba4be3871e6531a98b041cd1da79fd Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Mon, 8 Jun 2009 21:53:45 +0000 Subject: Fix dragging crash. git-svn-id: svn://localhost/ardour2/branches/3.0@5128 d708f5d6-7413-0410-9779-e7cbd77b26cf --- gtk2_ardour/editor_drag.cc | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'gtk2_ardour') diff --git a/gtk2_ardour/editor_drag.cc b/gtk2_ardour/editor_drag.cc index d41a91aadd..002fbdd32b 100644 --- a/gtk2_ardour/editor_drag.cc +++ b/gtk2_ardour/editor_drag.cc @@ -496,7 +496,9 @@ RegionMotionDrag::motion (GdkEvent* event, bool first_move) multiple regions, much detail must be computed per-region */ /* current_pointer_view will become the TimeAxisView that we're currently pointing at, and - current_pointer_layer the current layer on that TimeAxisView */ + current_pointer_layer the current layer on that TimeAxisView; in this code layer numbers + are with respect to how the view's layers are displayed; if we are in Overlaid mode, layer + is always 0 regardless of what the region's "real" layer is */ RouteTimeAxisView* current_pointer_view; layer_t current_pointer_layer; if (!check_possible (¤t_pointer_view, ¤t_pointer_layer)) { @@ -1072,6 +1074,10 @@ RegionMotionDrag::check_possible (RouteTimeAxisView** tv, layer_t* layer) (*tv) = dynamic_cast (tvp.first); (*layer) = tvp.second; + if (*tv && (*tv)->layer_display() == Overlaid) { + *layer = 0; + } + /* The region motion is only processed if the pointer is over an audio track. */ @@ -1180,7 +1186,11 @@ RegionMoveDrag::RegionMoveDrag (Editor* e, ArdourCanvas::Item* i, RegionView* p, TimeAxisView* const tv = &_primary->get_time_axis_view (); _dest_trackview = tv; - _dest_layer = _primary->region()->layer (); + if (tv->layer_display() == Overlaid) { + _dest_layer = 0; + } else { + _dest_layer = _primary->region()->layer (); + } double speed = 1; RouteTimeAxisView* rtv = dynamic_cast (tv); -- cgit v1.2.3