diff options
Diffstat (limited to 'gtk2_ardour')
-rw-r--r-- | gtk2_ardour/editor_drag.cc | 11 | ||||
-rw-r--r-- | gtk2_ardour/editor_drag.h | 1 |
2 files changed, 9 insertions, 3 deletions
diff --git a/gtk2_ardour/editor_drag.cc b/gtk2_ardour/editor_drag.cc index c1a8553d62..726a279a7e 100644 --- a/gtk2_ardour/editor_drag.cc +++ b/gtk2_ardour/editor_drag.cc @@ -593,6 +593,7 @@ RegionDrag::find_time_axis_view (TimeAxisView* t) const RegionMotionDrag::RegionMotionDrag (Editor* e, ArdourCanvas::Item* i, RegionView* p, list<RegionView*> const & v, bool b) : RegionDrag (e, i, p, v) , _brushing (b) + , _ignore_video_lock (false) , _total_x_delta (0) , _last_pointer_time_axis_view (0) , _last_pointer_layer (0) @@ -618,6 +619,10 @@ RegionMotionDrag::start_grab (GdkEvent* event, Gdk::Cursor* cursor) _last_pointer_layer = tv.first->layer_display() == Overlaid ? 0 : tv.second; } + if (Keyboard::modifier_state_equals (event->button.state, Keyboard::ModifierMask (Keyboard::TertiaryModifier))) { + _ignore_video_lock = true; + } + if (_brushing) { /* cross track dragging seems broken here. disabled for now. */ _y_constrained = true; @@ -1008,7 +1013,7 @@ RegionMotionDrag::motion (GdkEvent* event, bool first_move) y_delta = 0; - if (rv->region()->locked() || rv->region()->video_locked()) { + if (rv->region()->locked() || (rv->region()->video_locked() && !_ignore_video_lock)) { continue; } @@ -1430,7 +1435,7 @@ RegionMoveDrag::finished_copy (bool const changed_position, bool const /*changed RouteTimeAxisView* dest_rtv = 0; - if (i->view->region()->locked() || i->view->region()->video_locked()) { + if (i->view->region()->locked() || (i->view->region()->video_locked() && !_ignore_video_lock)) { continue; } @@ -1513,7 +1518,7 @@ RegionMoveDrag::finished_no_copy ( RegionView* rv = i->view; RouteTimeAxisView* dest_rtv = 0; - if (rv->region()->locked() || rv->region()->video_locked()) { + if (rv->region()->locked() || (rv->region()->video_locked() && !_ignore_video_lock)) { ++i; continue; } diff --git a/gtk2_ardour/editor_drag.h b/gtk2_ardour/editor_drag.h index 71527d4a4c..b4d5994a63 100644 --- a/gtk2_ardour/editor_drag.h +++ b/gtk2_ardour/editor_drag.h @@ -362,6 +362,7 @@ protected: virtual bool y_movement_allowed (int, double, int skip_invisible = 0) const; bool _brushing; + bool _ignore_video_lock; ARDOUR::framepos_t _last_frame_position; ///< last position of the thing being dragged double _total_x_delta; int _last_pointer_time_axis_view; |