diff --git a/gtk2_ardour/editor_drag.cc b/gtk2_ardour/editor_drag.cc index 87d7b6a1a9..675a722509 100644 --- a/gtk2_ardour/editor_drag.cc +++ b/gtk2_ardour/editor_drag.cc @@ -3718,11 +3718,13 @@ NoteDrag::motion (GdkEvent *, bool) _cumulative_dx += tdx; _cumulative_dy += tdy; - _region->move_selection (tdx, tdy, _cumulative_dy); + int8_t note_delta = total_dy(); + + _region->move_selection (tdx, tdy, note_delta); char buf[12]; - snprintf (buf, sizeof (buf), "%s (%d)", Evoral::midi_note_name (_primary->note()->note() + dy).c_str(), - (int) floor (_primary->note()->note() + dy)); + snprintf (buf, sizeof (buf), "%s (%d)", Evoral::midi_note_name (_primary->note()->note() + note_delta).c_str(), + (int) floor (_primary->note()->note() + note_delta)); _editor->show_verbose_canvas_cursor_with (buf); } diff --git a/gtk2_ardour/midi_region_view.cc b/gtk2_ardour/midi_region_view.cc index f5a0d98f20..6f582b3518 100644 --- a/gtk2_ardour/midi_region_view.cc +++ b/gtk2_ardour/midi_region_view.cc @@ -92,7 +92,6 @@ MidiRegionView::MidiRegionView (ArdourCanvas::Group *parent, RouteTimeAxisView & , _step_edit_cursor (0) , _step_edit_cursor_width (1.0) , _step_edit_cursor_position (0.0) - , _earliest_selected_time (Evoral::MaxMusicalTime) , _mouse_state(None) , _pressed_button(0) , _sort_needed (true) @@ -117,7 +116,6 @@ MidiRegionView::MidiRegionView (ArdourCanvas::Group *parent, RouteTimeAxisView & , _diff_command(0) , _ghost_note(0) , _drag_rect (0) - , _earliest_selected_time (Evoral::MaxMusicalTime) , _mouse_state(None) , _pressed_button(0) , _sort_needed (true) @@ -141,7 +139,6 @@ MidiRegionView::MidiRegionView (const MidiRegionView& other) , _diff_command(0) , _ghost_note(0) , _drag_rect (0) - , _earliest_selected_time (Evoral::MaxMusicalTime) , _mouse_state(None) , _pressed_button(0) , _sort_needed (true) @@ -169,7 +166,6 @@ MidiRegionView::MidiRegionView (const MidiRegionView& other, boost::shared_ptrset_selected (false); ev->hide_velocity (); - - if (Evoral::musical_time_equal (ev->note()->time(), _earliest_selected_time)) { - - _earliest_selected_time = Evoral::MaxMusicalTime; - - /* compute new earliest time */ - - for (Selection::iterator i = _selection.begin(); i != _selection.end(); ++i) { - if (!Evoral::musical_time_equal ((*i)->note()->time(), _earliest_selected_time) && - (*i)->note()->time() < _earliest_selected_time) { - _earliest_selected_time = (*i)->note()->time(); - } - } - } - if (_selection.empty()) { PublicEditor& editor (trackview.editor()); editor.get_selection().remove (this); - _earliest_selected_time = Evoral::MaxMusicalTime; } } @@ -1971,10 +1950,6 @@ MidiRegionView::add_to_selection (CanvasNoteEvent* ev) if (_selection.insert (ev).second) { ev->set_selected (true); play_midi_note ((ev)->note()); - - if (ev->note()->time() < _earliest_selected_time) { - _earliest_selected_time = ev->note()->time(); - } } if (add_mrv_selection) { @@ -1988,9 +1963,16 @@ MidiRegionView::move_selection(double dx, double dy, double cumulative_dy) { typedef vector > PossibleChord; PossibleChord to_play; + Evoral::MusicalTime earliest = Evoral::MaxMusicalTime; for (Selection::iterator i = _selection.begin(); i != _selection.end(); ++i) { - if (Evoral::musical_time_equal ((*i)->note()->time(), _earliest_selected_time)) { + if ((*i)->note()->time() < earliest) { + earliest = (*i)->note()->time(); + } + } + + for (Selection::iterator i = _selection.begin(); i != _selection.end(); ++i) { + if (Evoral::musical_time_equal ((*i)->note()->time(), earliest)) { to_play.push_back ((*i)->note()); } (*i)->move_event(dx, dy); diff --git a/gtk2_ardour/midi_region_view.h b/gtk2_ardour/midi_region_view.h index 4e4e9544c5..53b8c1ef0b 100644 --- a/gtk2_ardour/midi_region_view.h +++ b/gtk2_ardour/midi_region_view.h @@ -372,7 +372,6 @@ class MidiRegionView : public RegionView ArdourCanvas::SimpleRect* _step_edit_cursor; Evoral::MusicalTime _step_edit_cursor_width; Evoral::MusicalTime _step_edit_cursor_position; - Evoral::MusicalTime _earliest_selected_time; MouseState _mouse_state; int _pressed_button;