diff --git a/gtk2_ardour/midi_region_view.cc b/gtk2_ardour/midi_region_view.cc index 838d3faf63..74bebbc105 100644 --- a/gtk2_ardour/midi_region_view.cc +++ b/gtk2_ardour/midi_region_view.cc @@ -3392,7 +3392,9 @@ MidiRegionView::change_note_length (NoteBase* event, Temporal::Beats t) void MidiRegionView::begin_drag_edit (std::string const & why) { - trackview.editor().get_selection().set (this, true); + if (!_selected) { + trackview.editor().get_selection().set (this, true); + } start_note_diff_command (why); } diff --git a/gtk2_ardour/velocity_ghost_region.cc b/gtk2_ardour/velocity_ghost_region.cc index 459e26f03b..848287927b 100644 --- a/gtk2_ardour/velocity_ghost_region.cc +++ b/gtk2_ardour/velocity_ghost_region.cc @@ -292,7 +292,17 @@ VelocityGhostRegion::note_selected (NoteBase* ev) void VelocityGhostRegion::lollis_between (int x0, int x1, std::vector& within) { + MidiRegionView* mrv = dynamic_cast (&parent_rv); + assert (mrv); + MidiRegionView::Selection const & sel (mrv->selection()); + bool only_selected = !sel.empty(); + for (auto & gev : events) { + if (only_selected) { + if (!gev.second->event->selected()) { + continue; + } + } ArdourCanvas::Lollipop* l = dynamic_cast (gev.second->item); if (l) { ArdourCanvas::Duple pos = l->item_to_canvas (ArdourCanvas::Duple (l->x(), l->y0()));