From d5c4d068b099f762bb97c1825d8235bfb93622fd Mon Sep 17 00:00:00 2001 From: nick_m Date: Sat, 31 Oct 2015 06:02:54 +1100 Subject: Fix snap modifiers not working on notes when grid is set to off. --- gtk2_ardour/midi_region_view.cc | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'gtk2_ardour/midi_region_view.cc') diff --git a/gtk2_ardour/midi_region_view.cc b/gtk2_ardour/midi_region_view.cc index d53f5adc72..1a98df5b9d 100644 --- a/gtk2_ardour/midi_region_view.cc +++ b/gtk2_ardour/midi_region_view.cc @@ -2748,6 +2748,7 @@ void MidiRegionView::update_resizing (NoteBase* primary, bool at_front, double delta_x, bool relative, double snap_delta, bool with_snap) { bool cursor_set = false; + bool const ensure_snap = trackview.editor().snap_mode () != SnapMagnetic; for (std::vector::iterator i = _resize_data.begin(); i != _resize_data.end(); ++i) { ArdourCanvas::Rectangle* resize_rect = (*i)->resize_rect; @@ -2779,14 +2780,14 @@ MidiRegionView::update_resizing (NoteBase* primary, bool at_front, double delta_ if (at_front) { if (with_snap) { - resize_rect->set_x0 (snap_to_pixel(current_x) - snap_delta); + resize_rect->set_x0 (snap_to_pixel (current_x, ensure_snap) - snap_delta); } else { resize_rect->set_x0 (current_x - snap_delta); } resize_rect->set_x1 (canvas_note->x1()); } else { if (with_snap) { - resize_rect->set_x1 (snap_to_pixel(current_x) - snap_delta); + resize_rect->set_x1 (snap_to_pixel (current_x, ensure_snap) - snap_delta); } else { resize_rect->set_x1 (current_x - snap_delta); } @@ -2807,7 +2808,7 @@ MidiRegionView::update_resizing (NoteBase* primary, bool at_front, double delta_ sign = -1; } - const double snapped_x = (with_snap ? snap_pixel_to_sample (current_x) : trackview.editor ().pixel_to_sample (current_x)); + const double snapped_x = (with_snap ? snap_pixel_to_sample (current_x, ensure_snap) : trackview.editor ().pixel_to_sample (current_x)); Evoral::Beats beats = region_frames_to_region_beats (snapped_x); Evoral::Beats len = Evoral::Beats(); @@ -2843,6 +2844,8 @@ MidiRegionView::commit_resizing (NoteBase* primary, bool at_front, double delta_ { _note_diff_command = _model->new_note_diff_command (_("resize notes")); + bool const ensure_snap = trackview.editor().snap_mode () != SnapMagnetic; + for (std::vector::iterator i = _resize_data.begin(); i != _resize_data.end(); ++i) { Note* canvas_note = (*i)->note; ArdourCanvas::Rectangle* resize_rect = (*i)->resize_rect; @@ -2889,7 +2892,7 @@ MidiRegionView::commit_resizing (NoteBase* primary, bool at_front, double delta_ /* Convert the new x position to a frame within the source */ framepos_t current_fr; if (with_snap) { - current_fr = snap_pixel_to_sample (current_x) + _region->start (); + current_fr = snap_pixel_to_sample (current_x, ensure_snap) + _region->start (); } else { current_fr = trackview.editor().pixel_to_sample (current_x) + _region->start (); } -- cgit v1.2.3