diff options
Diffstat (limited to 'gtk2_ardour/selection.cc')
-rw-r--r-- | gtk2_ardour/selection.cc | 32 |
1 files changed, 22 insertions, 10 deletions
diff --git a/gtk2_ardour/selection.cc b/gtk2_ardour/selection.cc index 146d9a65c5..6465bb4d44 100644 --- a/gtk2_ardour/selection.cc +++ b/gtk2_ardour/selection.cc @@ -19,6 +19,7 @@ #include <algorithm> #include <sigc++/bind.h> + #include "pbd/error.h" #include "pbd/stacktrace.h" @@ -125,6 +126,9 @@ void Selection::clear_tracks () { if (!tracks.empty()) { + for (TrackViewList::iterator x = tracks.begin(); x != tracks.end(); ++x) { + (*x)->set_selected (false); + } tracks.clear (); if (!_no_tracks_changed) { TracksChanged(); @@ -249,8 +253,10 @@ Selection::toggle (TimeAxisView* track) TrackSelection::iterator i; if ((i = find (tracks.begin(), tracks.end(), track)) == tracks.end()) { + track->set_selected (true); tracks.push_back (track); } else { + track->set_selected (false); tracks.erase (i); } @@ -392,6 +398,9 @@ Selection::add (const TrackViewList& track_list) TrackViewList added = tracks.add (track_list); if (!added.empty()) { + for (TrackViewList::iterator x = added.begin(); x != added.end(); ++x) { + (*x)->set_selected (true); + } if (!_no_tracks_changed) { TracksChanged (); } @@ -402,6 +411,7 @@ void Selection::add (TimeAxisView* track) { TrackViewList tr; + track->set_selected (true); tr.push_back (track); add (tr); } @@ -589,6 +599,7 @@ Selection::remove (TimeAxisView* track) { list<TimeAxisView*>::iterator i; if ((i = find (tracks.begin(), tracks.end(), track)) != tracks.end()) { + track->set_selected (false); tracks.erase (i); if (!_no_tracks_changed) { TracksChanged(); @@ -597,15 +608,6 @@ Selection::remove (TimeAxisView* track) } void -Selection::remove (ControlPoint* p) -{ - PointSelection::iterator i = find (points.begin(), points.end(), p); - if (i != points.end ()) { - points.erase (i); - } -} - -void Selection::remove (const TrackViewList& track_list) { bool changed = false; @@ -614,6 +616,7 @@ Selection::remove (const TrackViewList& track_list) TrackViewList::iterator x = find (tracks.begin(), tracks.end(), *i); if (x != tracks.end()) { + (*i)->set_selected (false); tracks.erase (x); changed = true; } @@ -627,6 +630,15 @@ Selection::remove (const TrackViewList& track_list) } void +Selection::remove (ControlPoint* p) +{ + PointSelection::iterator i = find (points.begin(), points.end(), p); + if (i != points.end ()) { + points.erase (i); + } +} + +void Selection::remove (const MidiNoteSelection& midi_list) { bool changed = false; @@ -924,7 +936,7 @@ Selection::selected (Marker* m) bool Selection::selected (TimeAxisView* tv) { - return find (tracks.begin(), tracks.end(), tv) != tracks.end(); + return tv->get_selected (); } bool |