MCP: ctrl-select toggle selections status, analogous to GUI op
authorPaul Davis <paul@linuxaudiosystems.com>
Thu, 26 Apr 2012 22:10:32 +0000 (22:10 +0000)
committerPaul Davis <paul@linuxaudiosystems.com>
Thu, 26 Apr 2012 22:10:32 +0000 (22:10 +0000)
git-svn-id: svn://localhost/ardour2/branches/3.0@12102 d708f5d6-7413-0410-9779-e7cbd77b26cf

gtk2_ardour/editor.cc
libs/surfaces/control_protocol/control_protocol.cc
libs/surfaces/control_protocol/control_protocol/control_protocol.h
libs/surfaces/mackie/mackie_control_protocol.cc

index b7f768adcae366523ac062d2868e9e72d1432464..8783a9759b6f45e6bd7b04c176dfa9681fb5bbd4 100644 (file)
@@ -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());
index ec58dc2f2115e4f3968874f071750d9cdaffb0a2..e0eb57fc87836038572492fb97ea0554aeecb043 100644 (file)
@@ -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;
index b75a04db2a6d4817fa7540b9f2d99b56dddfcafe..6021f189fe483b0a7c1bbe33ce780991e7a4d738 100644 (file)
@@ -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;
 
index ccd29a4d3984bfb12032723ffbb00755ca89f173..a5bcefcb1785a1c98ffc69017261935fbb455ac8 100644 (file)
@@ -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());
+                               }
                        }
                }
        }