From 56af57d682f696b531de331704875101127d66a0 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Wed, 7 May 2014 12:13:34 -0400 Subject: [PATCH] shift-modifier during trim dragging causes region to jump to original position (anchored at start or end, depending on trim type) --- gtk2_ardour/editor_drag.cc | 13 ++++++++++++- gtk2_ardour/editor_drag.h | 1 + 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/gtk2_ardour/editor_drag.cc b/gtk2_ardour/editor_drag.cc index d451ef4aa9..9d2f6065e0 100644 --- a/gtk2_ardour/editor_drag.cc +++ b/gtk2_ardour/editor_drag.cc @@ -1789,9 +1789,10 @@ VideoTimeLineDrag::aborted (bool) TrimDrag::TrimDrag (Editor* e, ArdourCanvas::Item* i, RegionView* p, list const & v, bool preserve_fade_anchor) : RegionDrag (e, i, p, v) + , _preserve_fade_anchor (preserve_fade_anchor) + , _jump_position_when_done (false) { DEBUG_TRACE (DEBUG::Drags, "New TrimDrag\n"); - _preserve_fade_anchor = preserve_fade_anchor; } void @@ -1828,6 +1829,10 @@ TrimDrag::start_grab (GdkEvent* event, Gdk::Cursor*) } } + if (Keyboard::modifier_state_equals (event->button.state, Keyboard::TertiaryModifier)) { + _jump_position_when_done = true; + } + switch (_operation) { case StartTrim: show_verbose_cursor_time (region_start); @@ -2007,6 +2012,9 @@ TrimDrag::finished (GdkEvent* event, bool movement_occurred) ar->set_fade_in_length(new_length); } } + if (_jump_position_when_done) { + i->view->region()->set_position (i->initial_position); + } } } else if (_operation == EndTrim) { for (list::const_iterator i = _views.begin(); i != _views.end(); ++i) { @@ -2024,6 +2032,9 @@ TrimDrag::finished (GdkEvent* event, bool movement_occurred) ar->set_fade_out_length(new_length); } } + if (_jump_position_when_done) { + i->view->region()->set_position (i->initial_end - i->view->region()->length()); + } } } diff --git a/gtk2_ardour/editor_drag.h b/gtk2_ardour/editor_drag.h index 3f4c82d2d0..0bcfed9979 100644 --- a/gtk2_ardour/editor_drag.h +++ b/gtk2_ardour/editor_drag.h @@ -572,6 +572,7 @@ private: Operation _operation; bool _preserve_fade_anchor; + bool _jump_position_when_done; }; /** Meter marker drag */