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)
|
EditorRouteGroups::EditorRouteGroups (Editor* e)
|
||||||
: EditorComponent (e)
|
: EditorComponent (e)
|
||||||
, _all_group_active_button (_("\"all\" group"))
|
, _all_group_active_button (_("No Selection = All Tracks"))
|
||||||
, _in_row_change (false)
|
, _in_row_change (false)
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -163,6 +163,8 @@ EditorRouteGroups::EditorRouteGroups (Editor* e)
|
|||||||
_display_packer.pack_start (_scroller, true, true);
|
_display_packer.pack_start (_scroller, true, true);
|
||||||
_display_packer.pack_start (_all_group_active_button, false, false);
|
_display_packer.pack_start (_all_group_active_button, false, false);
|
||||||
_display_packer.pack_start (*button_box, 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
|
void
|
||||||
@ -499,3 +501,12 @@ EditorRouteGroups::run_new_group_dialog ()
|
|||||||
|
|
||||||
return _editor->_group_tabs->run_new_group_dialog (rl);
|
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 property_changed (ARDOUR::RouteGroup*, const PBD::PropertyChange &);
|
||||||
void remove_selected ();
|
void remove_selected ();
|
||||||
void run_new_group_dialog ();
|
void run_new_group_dialog ();
|
||||||
|
void all_group_toggled();
|
||||||
|
|
||||||
Glib::RefPtr<Gtk::ListStore> _model;
|
Glib::RefPtr<Gtk::ListStore> _model;
|
||||||
Glib::RefPtr<Gtk::TreeSelection> _selection;
|
Glib::RefPtr<Gtk::TreeSelection> _selection;
|
||||||
|
@ -176,10 +176,6 @@ Editor::select_all_tracks ()
|
|||||||
void
|
void
|
||||||
Editor::set_selected_track_as_side_effect (Selection::Operation op, bool force)
|
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) {
|
if (!clicked_axisview) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -189,12 +185,14 @@ Editor::set_selected_track_as_side_effect (Selection::Operation op, bool force)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool had_tracks = !selection->tracks.empty();
|
||||||
RouteGroup* group = clicked_routeview->route()->route_group();
|
RouteGroup* group = clicked_routeview->route()->route_group();
|
||||||
|
RouteGroup& arg (_session->all_route_group());
|
||||||
|
|
||||||
switch (op) {
|
switch (op) {
|
||||||
case Selection::Toggle:
|
case Selection::Toggle:
|
||||||
if (selection->selected (clicked_axisview)) {
|
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) {
|
for (TrackViewList::iterator i = track_views.begin(); i != track_views.end (); ++i) {
|
||||||
selection->remove(*i);
|
selection->remove(*i);
|
||||||
}
|
}
|
||||||
@ -207,7 +205,7 @@ Editor::set_selected_track_as_side_effect (Selection::Operation op, bool force)
|
|||||||
selection->remove (clicked_axisview);
|
selection->remove (clicked_axisview);
|
||||||
}
|
}
|
||||||
} else {
|
} 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) {
|
for (TrackViewList::iterator i = track_views.begin(); i != track_views.end (); ++i) {
|
||||||
selection->add(*i);
|
selection->add(*i);
|
||||||
}
|
}
|
||||||
@ -223,13 +221,29 @@ Editor::set_selected_track_as_side_effect (Selection::Operation op, bool force)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case Selection::Add:
|
case Selection::Add:
|
||||||
selection->clear();
|
if (!had_tracks && arg.is_select() && arg.is_active()) {
|
||||||
cerr << ("Editor::set_selected_track_as_side_effect case Selection::Add not yet implemented\n");
|
/* 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;
|
break;
|
||||||
|
|
||||||
case Selection::Set:
|
case Selection::Set:
|
||||||
selection->clear();
|
selection->clear();
|
||||||
if (_session->all_route_group().is_active()) {
|
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) {
|
for (TrackViewList::iterator i = track_views.begin(); i != track_views.end (); ++i) {
|
||||||
selection->add(*i);
|
selection->add(*i);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user