From ae2e8c67657daccb2cdafc3ddfeb7d9df126ed8f Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Thu, 26 Apr 2012 22:10:32 +0000 Subject: [PATCH] MCP: ctrl-select toggle selections status, analogous to GUI op git-svn-id: svn://localhost/ardour2/branches/3.0@12102 d708f5d6-7413-0410-9779-e7cbd77b26cf --- gtk2_ardour/editor.cc | 1 + libs/surfaces/control_protocol/control_protocol.cc | 1 + .../control_protocol/control_protocol.h | 1 + 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 ControlProtocol::VerticalZoomOutSelected; PBD::Signal1 ControlProtocol::TrackSelectionChanged; PBD::Signal1 ControlProtocol::AddRouteToSelection; PBD::Signal1 ControlProtocol::SetRouteSelection; +PBD::Signal1 ControlProtocol::ToggleRouteSelection; PBD::Signal1 ControlProtocol::RemoveRouteFromSelection; PBD::Signal0 ControlProtocol::ClearRouteSelection; PBD::Signal0 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 AddRouteToSelection; static PBD::Signal1 SetRouteSelection; + static PBD::Signal1 ToggleRouteSelection; static PBD::Signal1 RemoveRouteFromSelection; static PBD::Signal0 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()); + } } } }