summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2014-05-07 12:13:34 -0400
committerPaul Davis <paul@linuxaudiosystems.com>2014-05-07 12:13:34 -0400
commit56af57d682f696b531de331704875101127d66a0 (patch)
tree09ab20a287720ec936971d16f0b9a205009e3a89 /gtk2_ardour
parente99c8960c0b7fe48d890fe500597bc85b5aabfcb (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.cc13
-rw-r--r--gtk2_ardour/editor_drag.h1
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 */