diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc index 4efab64760..9ef72728f2 100644 --- a/gtk2_ardour/editor.cc +++ b/gtk2_ardour/editor.cc @@ -2929,10 +2929,13 @@ Editor::set_selected_track (TimeAxisView& view, Selection::Operation op, bool no for some reason. */ - if (selection->tracks.size() <= 1 || !no_remove) { + if (selection->tracks.empty()) { selection->set (&view); + commit = true; + } else if (selection->tracks.size() == 1 || !no_remove) { + selection->set (&view); + commit = true; } - commit = true; } break; diff --git a/gtk2_ardour/editor_ops.cc b/gtk2_ardour/editor_ops.cc index e61f707028..dda9d36b0e 100644 --- a/gtk2_ardour/editor_ops.cc +++ b/gtk2_ardour/editor_ops.cc @@ -1375,13 +1375,21 @@ Editor::invert_selection () bool Editor::select_all_within (nframes_t start, nframes_t end, double top, double bot, Selection::Operation op) { - list touched; - + list touched; + list::size_type n = 0; + for (TrackViewList::iterator iter = track_views.begin(); iter != track_views.end(); ++iter) { if ((*iter)->hidden()) { continue; } + + n = touched.size(); + (*iter)->get_selectables (start, end, top, bot, touched); + + if (n != touched.size()) { + selection->add (*iter); + } } begin_reversible_command (_("select all within"));