+void
+Selection::add (const RegionSelection& rs)
+{
+ /* XXX This method or the add (const vector<RegionView*>&) needs to go
+ */
+
+ bool changed = false;
+
+ for (RegionSelection::const_iterator i = rs.begin(); i != rs.end(); ++i) {
+ if (find (regions.begin(), regions.end(), (*i)) == regions.end()) {
+ changed = regions.add ((*i));
+ if (Config->get_link_region_and_track_selection() && changed) {
+ add (&(*i)->get_trackview());
+ }
+ }
+ }
+
+ if (changed) {
+ RegionsChanged ();
+ }
+}
+
+void
+Selection::add (RegionView* r)
+{
+ if (find (regions.begin(), regions.end(), r) == regions.end()) {
+ regions.add (r);
+ if (Config->get_link_region_and_track_selection()) {
+ add (&r->get_trackview());
+ }
+ RegionsChanged ();
+ }
+}
+
+void
+Selection::add (MidiRegionView* mrv)
+{
+ if (find (midi_regions.begin(), midi_regions.end(), mrv) == midi_regions.end()) {
+ midi_regions.push_back (mrv);
+ /* XXX should we do this? */
+#if 0
+ if (Config->get_link_region_and_track_selection()) {
+ add (&mrv->get_trackview());
+ }
+#endif
+ MidiRegionsChanged ();
+ }
+}
+