From d2d2308588e8444b0e2847b9eff03ed5e553e0f6 Mon Sep 17 00:00:00 2001 From: nick_m Date: Thu, 17 Nov 2016 04:08:13 +1100 Subject: [PATCH] magnetic snap uses note divisor appropriately. - also looks nicer when resizing MIDI regions. --- gtk2_ardour/editor_drag.cc | 13 +++++++++++-- 1 file 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::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 (i->view); @@ -2946,7 +2955,7 @@ TrimDrag::motion (GdkEvent* event, bool first_move) case EndTrim: for (list::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 (i->view); if (arv) {