summaryrefslogtreecommitdiff
path: root/gtk2_ardour/editor_selection.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2010-08-30 17:34:12 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2010-08-30 17:34:12 +0000
commita8e86b8f09e603e7b6cb2eb73471b80b89781ef2 (patch)
tree1673ff39f551d55bb64dd80ad1180b7fd8388c51 /gtk2_ardour/editor_selection.cc
parent80084dcdf32e0deb59e6b3642263ab0ea1e940e0 (diff)
tweak track selection during range drag; "all group" button in editor is now working, but not mapped to display the right setting at startup
git-svn-id: svn://localhost/ardour2/branches/3.0@7712 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/editor_selection.cc')
-rw-r--r--gtk2_ardour/editor_selection.cc34
1 files changed, 24 insertions, 10 deletions
diff --git a/gtk2_ardour/editor_selection.cc b/gtk2_ardour/editor_selection.cc
index bde72e5374..1ee275955e 100644
--- a/gtk2_ardour/editor_selection.cc
+++ b/gtk2_ardour/editor_selection.cc
@@ -176,10 +176,6 @@ Editor::select_all_tracks ()
void
Editor::set_selected_track_as_side_effect (Selection::Operation op, bool force)
{
- cerr << "E::sstase ca = " << clicked_axisview << " cr = " << clicked_routeview
- << " op = " << op << " force = " << force
- << endl;
-
if (!clicked_axisview) {
return;
}
@@ -189,12 +185,14 @@ Editor::set_selected_track_as_side_effect (Selection::Operation op, bool force)
return;
}
+ bool had_tracks = !selection->tracks.empty();
RouteGroup* group = clicked_routeview->route()->route_group();
+ RouteGroup& arg (_session->all_route_group());
switch (op) {
case Selection::Toggle:
if (selection->selected (clicked_axisview)) {
- if (_session->all_route_group().is_active()) {
+ if (arg.is_select() && arg.is_active()) {
for (TrackViewList::iterator i = track_views.begin(); i != track_views.end (); ++i) {
selection->remove(*i);
}
@@ -207,7 +205,7 @@ Editor::set_selected_track_as_side_effect (Selection::Operation op, bool force)
selection->remove (clicked_axisview);
}
} else {
- if (_session->all_route_group().is_active()) {
+ if (arg.is_select() && arg.is_active()) {
for (TrackViewList::iterator i = track_views.begin(); i != track_views.end (); ++i) {
selection->add(*i);
}
@@ -223,13 +221,29 @@ Editor::set_selected_track_as_side_effect (Selection::Operation op, bool force)
break;
case Selection::Add:
- selection->clear();
- cerr << ("Editor::set_selected_track_as_side_effect case Selection::Add not yet implemented\n");
+ if (!had_tracks && arg.is_select() && arg.is_active()) {
+ /* nothing was selected already, and all group is active etc. so use
+ all tracks.
+ */
+ for (TrackViewList::iterator i = track_views.begin(); i != track_views.end (); ++i) {
+ selection->add(*i);
+ }
+ } else if (group && group->is_active()) {
+ for (TrackViewList::iterator i = track_views.begin(); i != track_views.end (); ++i) {
+ if ((*i)->route_group() == group)
+ selection->add(*i);
+ }
+ } else {
+ selection->add (clicked_axisview);
+ }
break;
case Selection::Set:
- selection->clear();
- if (_session->all_route_group().is_active()) {
+ selection->clear();
+ if (!had_tracks && arg.is_select() && arg.is_active()) {
+ /* nothing was selected already, and all group is active etc. so use
+ all tracks.
+ */
for (TrackViewList::iterator i = track_views.begin(); i != track_views.end (); ++i) {
selection->add(*i);
}