diff options
-rw-r--r-- | gtk2_ardour/editor_selection.cc | 38 |
1 files changed, 28 insertions, 10 deletions
diff --git a/gtk2_ardour/editor_selection.cc b/gtk2_ardour/editor_selection.cc index bc0a21c4e4..0d5909778a 100644 --- a/gtk2_ardour/editor_selection.cc +++ b/gtk2_ardour/editor_selection.cc @@ -1159,7 +1159,7 @@ void Editor::track_selection_changed () { /* reset paste count, so the plaste location doesn't get incremented - * if we want to paste in the same place, but different track. */ + * if we want to paste in the same place, but different track. */ paste_count = 0; if ( _session->solo_selection_active() ) @@ -1713,7 +1713,6 @@ Editor::invert_selection_in_track () void Editor::invert_selection () { - list<Selectable *> touched; if (internal_editing()) { for (RegionSelection::iterator i = selection->regions.begin(); i != selection->regions.end(); ++i) { @@ -1725,16 +1724,35 @@ Editor::invert_selection () return; } - for (TrackViewList::iterator iter = track_views.begin(); iter != track_views.end(); ++iter) { - if ((*iter)->hidden()) { - continue; + if (!selection->tracks.empty()) { + + TrackViewList inverted; + + for (TrackViewList::iterator iter = track_views.begin(); iter != track_views.end(); ++iter) { + if (!(*iter)->selected()) { + inverted.push_back (*iter); + } } - (*iter)->get_inverted_selectables (*selection, touched); - } - begin_reversible_selection_op (X_("Invert Selection")); - selection->set (touched); - commit_reversible_selection_op (); + begin_reversible_selection_op (X_("Invert Track Selection")); + selection->set (inverted); + commit_reversible_selection_op (); + + } else { + + list<Selectable *> touched; + + for (TrackViewList::iterator iter = track_views.begin(); iter != track_views.end(); ++iter) { + if ((*iter)->hidden()) { + continue; + } + (*iter)->get_inverted_selectables (*selection, touched); + } + + begin_reversible_selection_op (X_("Invert ObjectSelection")); + selection->set (touched); + commit_reversible_selection_op (); + } } /** @param start Start time in session samples. |