diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2010-08-30 17:34:12 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2010-08-30 17:34:12 +0000 |
commit | a8e86b8f09e603e7b6cb2eb73471b80b89781ef2 (patch) | |
tree | 1673ff39f551d55bb64dd80ad1180b7fd8388c51 | |
parent | 80084dcdf32e0deb59e6b3642263ab0ea1e940e0 (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
-rw-r--r-- | gtk2_ardour/editor_route_groups.cc | 13 | ||||
-rw-r--r-- | gtk2_ardour/editor_route_groups.h | 1 | ||||
-rw-r--r-- | gtk2_ardour/editor_selection.cc | 34 |
3 files changed, 37 insertions, 11 deletions
diff --git a/gtk2_ardour/editor_route_groups.cc b/gtk2_ardour/editor_route_groups.cc index d4ab4542ea..31ab21c2bf 100644 --- a/gtk2_ardour/editor_route_groups.cc +++ b/gtk2_ardour/editor_route_groups.cc @@ -48,7 +48,7 @@ using Gtkmm2ext::Keyboard; EditorRouteGroups::EditorRouteGroups (Editor* e) : EditorComponent (e) - , _all_group_active_button (_("\"all\" group")) + , _all_group_active_button (_("No Selection = All Tracks")) , _in_row_change (false) { @@ -163,6 +163,8 @@ EditorRouteGroups::EditorRouteGroups (Editor* e) _display_packer.pack_start (_scroller, true, true); _display_packer.pack_start (_all_group_active_button, false, false); _display_packer.pack_start (*button_box, false, false); + + _all_group_active_button.signal_toggled().connect (sigc::mem_fun (*this, &EditorRouteGroups::all_group_toggled)); } void @@ -499,3 +501,12 @@ EditorRouteGroups::run_new_group_dialog () return _editor->_group_tabs->run_new_group_dialog (rl); } + +void +EditorRouteGroups::all_group_toggled () +{ + if (_session) { + _session->all_route_group().set_select (_all_group_active_button.get_active()); + } +} + diff --git a/gtk2_ardour/editor_route_groups.h b/gtk2_ardour/editor_route_groups.h index 5610596be1..127eedd0e2 100644 --- a/gtk2_ardour/editor_route_groups.h +++ b/gtk2_ardour/editor_route_groups.h @@ -71,6 +71,7 @@ private: void property_changed (ARDOUR::RouteGroup*, const PBD::PropertyChange &); void remove_selected (); void run_new_group_dialog (); + void all_group_toggled(); Glib::RefPtr<Gtk::ListStore> _model; Glib::RefPtr<Gtk::TreeSelection> _selection; 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); } |