From 2398b955c34e3a8ca9411a632208b2ab196197bb Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Tue, 5 Feb 2013 18:16:10 +0000 Subject: fix (1) lack of mute on master (2) lack of route-group driven behaviour for PRIMARY-click on mute button git-svn-id: svn://localhost/ardour2/branches/3.0@14049 d708f5d6-7413-0410-9779-e7cbd77b26cf --- gtk2_ardour/route_ui.cc | 33 +++++++++++++++++++++++++++++---- 1 file changed, 29 insertions(+), 4 deletions(-) (limited to 'gtk2_ardour/route_ui.cc') diff --git a/gtk2_ardour/route_ui.cc b/gtk2_ardour/route_ui.cc index 82d6955b15..8c9e283523 100644 --- a/gtk2_ardour/route_ui.cc +++ b/gtk2_ardour/route_ui.cc @@ -319,11 +319,32 @@ RouteUI::mute_press (GdkEventButton* ev) if (Keyboard::modifier_state_equals (ev->state, Keyboard::ModifierMask (Keyboard::PrimaryModifier|Keyboard::TertiaryModifier))) { + /* toggle mute on everything (but + * exclude the master and monitor) + * + * because we are going to erase + * elements of the list we need to work + * on a copy. + */ + + boost::shared_ptr rl = _session->get_routes (); + boost::shared_ptr copy (new RouteList); + + *copy = *rl; + + for (RouteList::iterator i = copy->begin(); i != copy->end(); ) { + if ((*i)->is_master() || (*i)->is_monitor()) { + i = copy->erase (i); + } else { + ++i; + } + } + if (_mute_release) { - _mute_release->routes = _session->get_routes (); + _mute_release->routes = copy; } - _session->set_mute (_session->get_routes(), !_route->muted()); + _session->set_mute (copy, !_route->muted()); } else if (Keyboard::modifier_state_equals (ev->state, Keyboard::PrimaryModifier)) { @@ -331,12 +352,16 @@ RouteUI::mute_press (GdkEventButton* ev) NOTE: Primary-button2 is MIDI learn. */ + if (ev->button == 1 && _route->route_group()) { + + boost::shared_ptr rl = _route->route_group()->route_list(); + if (_mute_release) { - _mute_release->routes = _session->get_routes (); + _mute_release->routes = rl; } - _session->set_mute (_session->get_routes(), !_route->muted(), Session::rt_cleanup, true); + _session->set_mute (rl, !_route->muted(), Session::rt_cleanup, true); } } else { -- cgit v1.2.3