summaryrefslogtreecommitdiff
path: root/gtk2_ardour/editor_drag.cc
diff options
context:
space:
mode:
authornick_m <mainsbridge@gmail.com>2016-11-17 04:08:13 +1100
committernick_m <mainsbridge@gmail.com>2016-11-17 04:08:13 +1100
commitd2d2308588e8444b0e2847b9eff03ed5e553e0f6 (patch)
tree656a8349be60e6cc657fec54619810be5c0fa865 /gtk2_ardour/editor_drag.cc
parent4c8380ce75ea3908ce7e6e375683af17faa7036e (diff)
magnetic snap uses note divisor appropriately.
- also looks nicer when resizing MIDI regions.
Diffstat (limited to 'gtk2_ardour/editor_drag.cc')
-rw-r--r--gtk2_ardour/editor_drag.cc13
1 files changed, 11 insertions, 2 deletions
diff --git a/gtk2_ardour/editor_drag.cc b/gtk2_ardour/editor_drag.cc
index a533e3ddd3..4a3bd049b2 100644
--- a/gtk2_ardour/editor_drag.cc
+++ b/gtk2_ardour/editor_drag.cc
@@ -2922,12 +2922,21 @@ TrimDrag::motion (GdkEvent* event, bool first_move)
}
}
+ int32_t divisions = _editor->get_grid_music_divisions (event->button.state);
+
+ if (_editor->snap_mode() == Editing::SnapMagnetic) {
+ const framepos_t presnap = adjusted_frame (_drags->current_pointer_frame () + snap_delta (event->button.state), event, false);
+
+ if (presnap == adj_frame) {
+ divisions = 0;
+ }
+ }
switch (_operation) {
case StartTrim:
for (list<DraggingView>::iterator i = _views.begin(); i != _views.end(); ++i) {
bool changed = i->view->trim_front (i->initial_position + dt, non_overlap_trim
- , _editor->get_grid_music_divisions (event->button.state));
+ , divisions);
if (changed && _preserve_fade_anchor) {
AudioRegionView* arv = dynamic_cast<AudioRegionView*> (i->view);
@@ -2946,7 +2955,7 @@ TrimDrag::motion (GdkEvent* event, bool first_move)
case EndTrim:
for (list<DraggingView>::iterator i = _views.begin(); i != _views.end(); ++i) {
- bool changed = i->view->trim_end (i->initial_end + dt, non_overlap_trim, _editor->get_grid_music_divisions (event->button.state));
+ bool changed = i->view->trim_end (i->initial_end + dt, non_overlap_trim, divisions);
if (changed && _preserve_fade_anchor) {
AudioRegionView* arv = dynamic_cast<AudioRegionView*> (i->view);
if (arv) {