diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2006-03-08 02:50:53 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2006-03-08 02:50:53 +0000 |
commit | 0d2c8771a7b0f70fe4cf21cfdcfca709470787c2 (patch) | |
tree | d39ee0545b79178894d5216b2c87956e8bedc14c /gtk2_ardour/selection.cc | |
parent | be60137cfb31ef1266f5132a9fd465c01ce074a9 (diff) |
fix for deferred saves by StateManager-derivatives; changes to new/copy/clear playlist ops (not finished), TRUE/FALSE -> true/false in editor_mouse.cc
git-svn-id: svn://localhost/trunk/ardour2@358 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/selection.cc')
-rw-r--r-- | gtk2_ardour/selection.cc | 89 |
1 files changed, 30 insertions, 59 deletions
diff --git a/gtk2_ardour/selection.cc b/gtk2_ardour/selection.cc index d6efce7264..82e8bbb682 100644 --- a/gtk2_ardour/selection.cc +++ b/gtk2_ardour/selection.cc @@ -152,94 +152,65 @@ 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 (); - } -} - -void -Selection::toggle (const list<Playlist*>& pllist) -{ - bool changed = false; - - for (list<Playlist*>::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 (); + } else { + playlists.erase (i); } -} - -void -Selection::toggle (const list<TimeAxisView*>& track_list) -{ - bool changed = false; - for (list<TimeAxisView*>::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()) { - audio_regions.add (r); - RegionsChanged (); - } -} + AudioRegionSelection::iterator i; -void -Selection::toggle (vector<AudioRegionView*>& v) -{ - bool changed = false; + cerr << "about to toggle a regionview\n"; - for (vector<AudioRegionView*>::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; - } + if ((i = find (audio_regions.begin(), audio_regions.end(), r)) == audio_regions.end()) { + audio_regions.add (r); + cerr << "\tadded\n"; + } else { + audio_regions.erase (i); + cerr << "\tremoved\n"; } - if (changed) { - RegionsChanged (); - } + RegionsChanged (); + cerr << "done\n"; } long |