summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gtk2_ardour/editor_drag.cc15
-rw-r--r--gtk2_ardour/editor_drag.h1
2 files changed, 16 insertions, 0 deletions
diff --git a/gtk2_ardour/editor_drag.cc b/gtk2_ardour/editor_drag.cc
index 84fb2d557c..9455e028c6 100644
--- a/gtk2_ardour/editor_drag.cc
+++ b/gtk2_ardour/editor_drag.cc
@@ -2502,11 +2502,15 @@ VideoTimeLineDrag::VideoTimeLineDrag (Editor* e, ArdourCanvas::Item* i)
_editor->get_regions_after(rs, (framepos_t) 0, empty);
std::list<RegionView*> views = rs.by_layer();
+ _stuck = false;
for (list<RegionView*>::iterator i = views.begin(); i != views.end(); ++i) {
RegionView* rv = (*i);
if (!rv->region()->video_locked()) {
continue;
}
+ if (!rv->region()->position_locked()) {
+ _stuck = true;
+ }
_views.push_back (AVDraggingView (rv));
}
}
@@ -2518,6 +2522,10 @@ VideoTimeLineDrag::start_grab (GdkEvent* event, Gdk::Cursor*)
if (_editor->session() == 0) {
return;
}
+ if (_stuck) {
+ show_verbose_cursor_text (_("One or more Audio Regions\nare both Locked and\nLocked to Video.\nThe video cannot me moved."));
+ return;
+ }
_startdrag_video_offset=ARDOUR_UI::instance()->video_timeline->get_offset();
_max_backwards_drag = (
@@ -2549,6 +2557,10 @@ VideoTimeLineDrag::motion (GdkEvent* event, bool first_move)
if (ARDOUR_UI::instance()->video_timeline->is_offset_locked()) {
return;
}
+ if (_stuck) {
+ show_verbose_cursor_text (_("One or more Audio Regions\nare both Locked and\nLocked to Video.\nThe video cannot me moved."));
+ return;
+ }
framecnt_t dt = adjusted_current_frame (event) - raw_grab_frame() + _pointer_frame_offset;
dt = ARDOUR_UI::instance()->video_timeline->quantify_frames_to_apv(_startdrag_video_offset+dt) - _startdrag_video_offset;
@@ -2595,6 +2607,9 @@ VideoTimeLineDrag::finished (GdkEvent * /*event*/, bool movement_occurred)
if (ARDOUR_UI::instance()->video_timeline->is_offset_locked()) {
return;
}
+ if (_stuck) {
+ return;
+ }
if (!movement_occurred || ! _editor->session()) {
return;
diff --git a/gtk2_ardour/editor_drag.h b/gtk2_ardour/editor_drag.h
index b9310c79fb..71527d4a4c 100644
--- a/gtk2_ardour/editor_drag.h
+++ b/gtk2_ardour/editor_drag.h
@@ -645,6 +645,7 @@ protected:
private:
ARDOUR::frameoffset_t _startdrag_video_offset;
ARDOUR::frameoffset_t _max_backwards_drag;
+ bool _stuck;
};
/** Drag to trim region(s) */