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
This commit is contained in:
parent
80084dcdf3
commit
a8e86b8f09
@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user