more consistency for mute/solo/rec-enable press including making ctrl-click work...
authorPaul Davis <paul@linuxaudiosystems.com>
Tue, 5 Feb 2013 21:39:38 +0000 (21:39 +0000)
committerPaul Davis <paul@linuxaudiosystems.com>
Tue, 5 Feb 2013 21:39:38 +0000 (21:39 +0000)
git-svn-id: svn://localhost/ardour2/branches/3.0@14054 d708f5d6-7413-0410-9779-e7cbd77b26cf

gtk2_ardour/route_ui.cc

index 8c9e2835231e7b91fa2b725ea23f721258cae99e..b10906192b04082c9b4d6118bf58e0213d4186a2 100644 (file)
@@ -327,10 +327,9 @@ RouteUI::mute_press (GdkEventButton* ev)
                                         * on a copy.
                                         */
                                        
-                                       boost::shared_ptr<RouteList> rl = _session->get_routes ();
                                        boost::shared_ptr<RouteList> copy (new RouteList);
 
-                                       *copy = *rl;
+                                       *copy = *_session->get_routes ();
 
                                        for (RouteList::iterator i = copy->begin(); i != copy->end(); ) {
                                                if ((*i)->is_master() || (*i)->is_monitor()) {
@@ -352,13 +351,20 @@ RouteUI::mute_press (GdkEventButton* ev)
                                           NOTE: Primary-button2 is MIDI learn.
                                        */
 
+                                       boost::shared_ptr<RouteList> rl;
 
-                                       if (ev->button == 1 && _route->route_group()) {
+                                       if (ev->button == 1) { 
 
-                                               boost::shared_ptr<RouteList> rl = _route->route_group()->route_list();
-                                               
-                                               if (_mute_release) {
-                                                       _mute_release->routes = rl;
+                                               if (_route->route_group()) {
+                                                       
+                                                       rl = _route->route_group()->route_list();
+                                                       
+                                                       if (_mute_release) {
+                                                               _mute_release->routes = rl;
+                                                       }
+                                               } else {
+                                                       rl.reset (new RouteList);
+                                                       rl->push_back (_route);
                                                }
 
                                                _session->set_mute (rl, !_route->muted(), Session::rt_cleanup, true);
@@ -370,7 +376,7 @@ RouteUI::mute_press (GdkEventButton* ev)
 
                                        boost::shared_ptr<RouteList> rl (new RouteList);
                                        rl->push_back (_route);
-
+                                       
                                        if (_mute_release) {
                                                _mute_release->routes = rl;
                                        }
@@ -493,16 +499,30 @@ RouteUI::solo_press(GdkEventButton* ev)
                                           NOTE: Primary-button2 is MIDI learn.
                                        */
 
-                                       if (ev->button == 1 && _route->route_group()) {
+                                       /* Primary-button1 applies change to the mix group even if it is not active
+                                          NOTE: Primary-button2 is MIDI learn.
+                                       */
+
+                                       boost::shared_ptr<RouteList> rl;
+
+                                       if (ev->button == 1) { 
 
-                                               if (_solo_release) {
-                                                       _solo_release->routes = _route->route_group()->route_list();
+                                               if (_route->route_group()) {
+                                                       
+                                                       rl = _route->route_group()->route_list();
+                                                       
+                                                       if (_solo_release) {
+                                                               _solo_release->routes = rl;
+                                                       }
+                                               } else {
+                                                       rl.reset (new RouteList);
+                                                       rl->push_back (_route);
                                                }
 
                                                if (Config->get_solo_control_is_listen_control()) {
-                                                       _session->set_listen (_route->route_group()->route_list(), !_route->listening_via_monitor(),  Session::rt_cleanup, true);
+                                                       _session->set_listen (rl, !_route->listening_via_monitor(),  Session::rt_cleanup, true);
                                                } else {
-                                                       _session->set_solo (_route->route_group()->route_list(), !_route->self_soloed(),  Session::rt_cleanup, true);
+                                                       _session->set_solo (rl, !_route->self_soloed(),  Session::rt_cleanup, true);
                                                }
                                        }
 
@@ -594,8 +614,21 @@ RouteUI::rec_enable_press(GdkEventButton* ev)
                        /* Primary-button1 applies change to the route group (even if it is not active)
                           NOTE: Primary-button2 is MIDI learn.
                        */
-                       if (ev->button == 1 && _route->route_group()) {
-                               _session->set_record_enabled (_route->route_group()->route_list(), !rec_enable_button->active_state(), Session::rt_cleanup, true);
+
+                       if (ev->button == 1) {
+
+                               boost::shared_ptr<RouteList> rl;
+                               
+                               if (_route->route_group()) {
+                                       
+                                       rl = _route->route_group()->route_list();
+                                       
+                               } else {
+                                       rl.reset (new RouteList);
+                                       rl->push_back (_route);
+                               }
+                               
+                               _session->set_record_enabled (rl, !rec_enable_button->active_state(), Session::rt_cleanup, true);
                        }
 
                } else if (Keyboard::is_context_menu_event (ev)) {