summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2012-04-26 22:10:32 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2012-04-26 22:10:32 +0000
commitae2e8c67657daccb2cdafc3ddfeb7d9df126ed8f (patch)
tree8046fa3beb086b7c69e5d0d51b72823ea2c7689e /libs
parentcafbc632fb71db817d399dce5f18be7528573a6f (diff)
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
Diffstat (limited to 'libs')
-rw-r--r--libs/surfaces/control_protocol/control_protocol.cc1
-rw-r--r--libs/surfaces/control_protocol/control_protocol/control_protocol.h1
-rw-r--r--libs/surfaces/mackie/mackie_control_protocol.cc11
3 files changed, 10 insertions, 3 deletions
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());
+ }
}
}
}