diff --git a/gtk2_ardour/selection.cc b/gtk2_ardour/selection.cc index a495c30720..9a136bd4b8 100644 --- a/gtk2_ardour/selection.cc +++ b/gtk2_ardour/selection.cc @@ -465,7 +465,6 @@ void Selection::add (vector& v) { clear_time(); //enforce object/range exclusivity - clear_tracks(); //enforce object/track exclusivity /* XXX This method or the add (const RegionSelection&) needs to go */ @@ -487,7 +486,6 @@ void Selection::add (const RegionSelection& rs) { clear_time(); //enforce object/range exclusivity - clear_tracks(); //enforce object/track exclusivity /* XXX This method or the add (const vector&) needs to go */ @@ -509,7 +507,6 @@ void Selection::add (RegionView* r) { clear_time(); //enforce object/range exclusivity - clear_tracks(); //enforce object/track exclusivity if (find (regions.begin(), regions.end(), r) == regions.end()) { bool changed = regions.add (r); @@ -820,7 +817,6 @@ void Selection::set (const RegionSelection& rs) { clear_time(); //enforce region/object exclusivity - clear_tracks(); //enforce object/track exclusivity clear_objects(); regions = rs; RegionsChanged(); /* EMIT SIGNAL */ @@ -836,21 +832,28 @@ Selection::set (MidiRegionView* mrv) } void -Selection::set (RegionView* r, bool /*also_clear_tracks*/) +Selection::set (RegionView* r, bool also_clear_tracks/*=false*/) { clear_time(); //enforce region/object exclusivity - clear_tracks(); //enforce object/track exclusivity clear_objects (); + + if (also_clear_tracks) { + clear_tracks(); + } + add (r); } void -Selection::set (vector& v) +Selection::set (vector& v, bool also_clear_tracks/*=false*/) { clear_time(); //enforce region/object exclusivity - clear_tracks(); //enforce object/track exclusivity clear_objects(); + if (also_clear_tracks) { + clear_tracks(); + } + add (v); } diff --git a/gtk2_ardour/selection.h b/gtk2_ardour/selection.h index 5a5ceedf06..8d3e7fccc0 100644 --- a/gtk2_ardour/selection.h +++ b/gtk2_ardour/selection.h @@ -123,9 +123,9 @@ class Selection : public sigc::trackable, public PBD::ScopedConnectionList void set (TimeAxisView*); void set (const TrackViewList&); void set (const MidiNoteSelection&); - void set (RegionView*, bool also_clear_tracks = true); + void set (RegionView*, bool also_clear_tracks = false); void set (MidiRegionView*); - void set (std::vector&); + void set (std::vector&, bool also_clear_tracks = false); long set (framepos_t, framepos_t); void set_preserving_all_ranges (framepos_t, framepos_t); void set (boost::shared_ptr);