diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2014-05-07 12:13:34 -0400 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2014-05-07 12:13:34 -0400 |
commit | 56af57d682f696b531de331704875101127d66a0 (patch) | |
tree | 09ab20a287720ec936971d16f0b9a205009e3a89 /gtk2_ardour | |
parent | e99c8960c0b7fe48d890fe500597bc85b5aabfcb (diff) |
shift-modifier during trim dragging causes region to jump to original position (anchored at start or end, depending on trim type)
Diffstat (limited to 'gtk2_ardour')
-rw-r--r-- | gtk2_ardour/editor_drag.cc | 13 | ||||
-rw-r--r-- | gtk2_ardour/editor_drag.h | 1 |
2 files changed, 13 insertions, 1 deletions
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<RegionView*> 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<DraggingView>::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 */ |