diff options
Diffstat (limited to 'gtk2_ardour/selection.cc')
-rw-r--r-- | gtk2_ardour/selection.cc | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/gtk2_ardour/selection.cc b/gtk2_ardour/selection.cc index baf424669f..c1a53bd00d 100644 --- a/gtk2_ardour/selection.cc +++ b/gtk2_ardour/selection.cc @@ -27,6 +27,7 @@ #include "ardour/rc_configuration.h" #include "audio_region_view.h" +#include "debug.h" #include "gui_thread.h" #include "midi_cut_buffer.h" #include "region_gain_line.h" @@ -177,9 +178,18 @@ Selection::clear_midi_notes () MidiNotesChanged (); } - /* The note selection is actually stored in MidiRegionView, emit signal to - tell them to clear their selection. */ - ClearMidiNoteSelection(); /* EMIT SIGNAL */ + // clear note selections for MRV's that have note selections + // this will cause the MRV to be removed from the list + for (MidiRegionSelection::iterator i = midi_regions.begin(); + i != midi_regions.end();) { + MidiRegionSelection::iterator tmp = i; + ++tmp; + MidiRegionView* mrv = dynamic_cast<MidiRegionView*>(*i); + if (mrv) { + mrv->clear_selection(); + } + i = tmp; + } } void @@ -518,6 +528,8 @@ Selection::add (RegionView* r) void Selection::add (MidiRegionView* mrv) { + DEBUG_TRACE(DEBUG::Selection, string_compose("Selection::add MRV %1\n", mrv)); + clear_time(); //enforce object/range exclusivity clear_tracks(); //enforce object/track exclusivity @@ -719,6 +731,8 @@ Selection::remove (RegionView* r) void Selection::remove (MidiRegionView* mrv) { + DEBUG_TRACE(DEBUG::Selection, string_compose("Selection::remove MRV %1\n", mrv)); + MidiRegionSelection::iterator x; if ((x = find (midi_regions.begin(), midi_regions.end(), mrv)) != midi_regions.end()) { @@ -727,7 +741,6 @@ Selection::remove (MidiRegionView* mrv) } } - void Selection::remove (uint32_t selection_id) { |