X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fselection.cc;h=3c1aea1ec85caa30ff33236cf07a925c7e8311e8;hb=868f557f2612903f72614a2b3a317c7a528188d1;hp=d6efce7264b754fd4aa7c4a103f68cf1a7fb6d73;hpb=5a39bf595c737dbb36666a9e718ac267e9131380;p=ardour.git diff --git a/gtk2_ardour/selection.cc b/gtk2_ardour/selection.cc index d6efce7264..3c1aea1ec8 100644 --- a/gtk2_ardour/selection.cc +++ b/gtk2_ardour/selection.cc @@ -152,94 +152,76 @@ Selection::clear_lines () void Selection::toggle (Redirect* r) { - if (find (redirects.begin(), redirects.end(), r) == redirects.end()) { + RedirectSelection::iterator i; + + if ((i = find (redirects.begin(), redirects.end(), r)) == redirects.end()) { redirects.push_back (r); - RedirectsChanged(); + } else { + redirects.erase (i); } + RedirectsChanged(); + } void Selection::toggle (Playlist* pl) { - if (find (playlists.begin(), playlists.end(), pl) == playlists.end()) { + PlaylistSelection::iterator i; + + if ((i = find (playlists.begin(), playlists.end(), pl)) == playlists.end()) { pl->ref (); playlists.push_back(pl); - PlaylistsChanged (); + } else { + playlists.erase (i); } -} -void -Selection::toggle (const list& pllist) -{ - bool changed = false; - - for (list::const_iterator i = pllist.begin(); i != pllist.end(); ++i) { - if (find (playlists.begin(), playlists.end(), (*i)) == playlists.end()) { - (*i)->ref (); - playlists.push_back (*i); - changed = true; - } - } - - if (changed) { - PlaylistsChanged (); - } -} - -void -Selection::toggle (const list& track_list) -{ - bool changed = false; - - for (list::const_iterator i = track_list.begin(); i != track_list.end(); ++i) { - if (find (tracks.begin(), tracks.end(), (*i)) == tracks.end()) { - void (Selection::*pmf)(TimeAxisView*) = &Selection::remove; - (*i)->GoingAway.connect (sigc::bind (mem_fun (*this, pmf), (*i))); - tracks.push_back (*i); - changed = true; - } - } - - if (changed) { - TracksChanged (); - } + PlaylistsChanged (); } void Selection::toggle (TimeAxisView* track) { - if (find (tracks.begin(), tracks.end(), track) == tracks.end()) { + TrackSelection::iterator i; + + if ((i = find (tracks.begin(), tracks.end(), track)) == tracks.end()) { void (Selection::*pmf)(TimeAxisView*) = &Selection::remove; track->GoingAway.connect (sigc::bind (mem_fun (*this, pmf), track)); tracks.push_back (track); - TracksChanged(); + } else { + tracks.erase (i); } + + TracksChanged(); } void Selection::toggle (AudioRegionView* r) { - if (find (audio_regions.begin(), audio_regions.end(), r) == audio_regions.end()) { + AudioRegionSelection::iterator i; + + if ((i = find (audio_regions.begin(), audio_regions.end(), r)) == audio_regions.end()) { audio_regions.add (r); - RegionsChanged (); + } else { + audio_regions.erase (i); } + + RegionsChanged (); } void -Selection::toggle (vector& v) +Selection::toggle (vector& r) { - bool changed = false; + AudioRegionSelection::iterator i; - for (vector::iterator i = v.begin(); i != v.end(); ++i) { - if (find (audio_regions.begin(), audio_regions.end(), (*i)) == audio_regions.end()) { - audio_regions.add ((*i)); - changed = true; + for (vector::iterator x = r.begin(); x != r.end(); ++x) { + if ((i = find (audio_regions.begin(), audio_regions.end(), (*x))) == audio_regions.end()) { + audio_regions.add ((*x)); + } else { + audio_regions.erase (i); } } - if (changed) { - RegionsChanged (); - } + RegionsChanged (); } long @@ -680,6 +662,6 @@ Selection::add (vector& autos) points.push_back (**i); delete *i; } - + PointsChanged (); }