summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
Diffstat (limited to 'gtk2_ardour')
-rw-r--r--gtk2_ardour/editor_drag.cc11
-rw-r--r--gtk2_ardour/editor_drag.h1
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;