diff options
-rw-r--r-- | gtk2_ardour/editor.cc | 1 | ||||
-rw-r--r-- | libs/surfaces/control_protocol/control_protocol.cc | 1 | ||||
-rw-r--r-- | libs/surfaces/control_protocol/control_protocol/control_protocol.h | 1 | ||||
-rw-r--r-- | libs/surfaces/mackie/mackie_control_protocol.cc | 11 |
4 files changed, 11 insertions, 3 deletions
diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc index b7f768adca..8783a9759b 100644 --- a/gtk2_ardour/editor.cc +++ b/gtk2_ardour/editor.cc @@ -721,6 +721,7 @@ Editor::Editor () ControlProtocol::AddRouteToSelection.connect (*this, invalidator (*this), boost::bind (&Editor::control_select, this, _1, Selection::Add), gui_context()); ControlProtocol::RemoveRouteFromSelection.connect (*this, invalidator (*this), boost::bind (&Editor::control_select, this, _1, Selection::Toggle), gui_context()); ControlProtocol::SetRouteSelection.connect (*this, invalidator (*this), boost::bind (&Editor::control_select, this, _1, Selection::Set), gui_context()); + ControlProtocol::ToggleRouteSelection.connect (*this, invalidator (*this), boost::bind (&Editor::control_select, this, _1, Selection::Toggle), gui_context()); ControlProtocol::ClearRouteSelection.connect (*this, invalidator (*this), boost::bind (&Editor::control_unselect, this), gui_context()); BasicUI::AccessAction.connect (*this, invalidator (*this), boost::bind (&Editor::access_action, this, _1, _2), gui_context()); diff --git a/libs/surfaces/control_protocol/control_protocol.cc b/libs/surfaces/control_protocol/control_protocol.cc index ec58dc2f21..e0eb57fc87 100644 --- a/libs/surfaces/control_protocol/control_protocol.cc +++ b/libs/surfaces/control_protocol/control_protocol.cc @@ -47,6 +47,7 @@ PBD::Signal0<void> ControlProtocol::VerticalZoomOutSelected; PBD::Signal1<void,RouteNotificationListPtr> ControlProtocol::TrackSelectionChanged; PBD::Signal1<void,uint32_t> ControlProtocol::AddRouteToSelection; PBD::Signal1<void,uint32_t> ControlProtocol::SetRouteSelection; +PBD::Signal1<void,uint32_t> ControlProtocol::ToggleRouteSelection; PBD::Signal1<void,uint32_t> ControlProtocol::RemoveRouteFromSelection; PBD::Signal0<void> ControlProtocol::ClearRouteSelection; PBD::Signal0<void> ControlProtocol::StepTracksDown; diff --git a/libs/surfaces/control_protocol/control_protocol/control_protocol.h b/libs/surfaces/control_protocol/control_protocol/control_protocol.h index b75a04db2a..6021f189fe 100644 --- a/libs/surfaces/control_protocol/control_protocol/control_protocol.h +++ b/libs/surfaces/control_protocol/control_protocol/control_protocol.h @@ -78,6 +78,7 @@ class ControlProtocol : public PBD::Stateful, public PBD::ScopedConnectionList, static PBD::Signal1<void,uint32_t> AddRouteToSelection; static PBD::Signal1<void,uint32_t> SetRouteSelection; + static PBD::Signal1<void,uint32_t> ToggleRouteSelection; static PBD::Signal1<void,uint32_t> RemoveRouteFromSelection; static PBD::Signal0<void> ClearRouteSelection; diff --git a/libs/surfaces/mackie/mackie_control_protocol.cc b/libs/surfaces/mackie/mackie_control_protocol.cc index ccd29a4d39..a5bcefcb17 100644 --- a/libs/surfaces/mackie/mackie_control_protocol.cc +++ b/libs/surfaces/mackie/mackie_control_protocol.cc @@ -1247,10 +1247,15 @@ MackieControlProtocol::select_range () if (!routes.empty()) { for (RouteList::iterator r = routes.begin(); r != routes.end(); ++r) { - if (r == routes.begin()) { - SetRouteSelection ((*r)->remote_control_id()); + + if (_modifier_state == MODIFIER_CONTROL) { + ToggleRouteSelection ((*r)->remote_control_id ()); } else { - AddRouteToSelection ((*r)->remote_control_id()); + if (r == routes.begin()) { + SetRouteSelection ((*r)->remote_control_id()); + } else { + AddRouteToSelection ((*r)->remote_control_id()); + } } } } |