diff --git a/gtk2_ardour/route_ui.cc b/gtk2_ardour/route_ui.cc index ddba45b73f..a1a65750d1 100644 --- a/gtk2_ardour/route_ui.cc +++ b/gtk2_ardour/route_ui.cc @@ -426,7 +426,7 @@ RouteUI::mute_press (GdkEventButton* ev) } DisplaySuspender ds; - _session->set_mute (rl, !_route->muted(), Session::rt_cleanup, Controllable::WholeGroup); + _session->set_mute (rl, !_route->muted(), Session::rt_cleanup, Controllable::InverseGroup); } } else { @@ -620,9 +620,9 @@ RouteUI::solo_press(GdkEventButton* ev) DisplaySuspender ds; if (Config->get_solo_control_is_listen_control()) { - _session->set_listen (rl, !_route->listening_via_monitor(), Session::rt_cleanup, Controllable::WholeGroup); + _session->set_listen (rl, !_route->listening_via_monitor(), Session::rt_cleanup, Controllable::InverseGroup); } else { - _session->set_solo (rl, !_route->self_soloed(), Session::rt_cleanup, Controllable::WholeGroup); + _session->set_solo (rl, !_route->self_soloed(), Session::rt_cleanup, Controllable::InverseGroup); } } @@ -735,7 +735,7 @@ RouteUI::rec_enable_press(GdkEventButton* ev) } DisplaySuspender ds; - _session->set_record_enabled (rl, !_route->record_enabled(), Session::rt_cleanup, Controllable::WholeGroup); + _session->set_record_enabled (rl, !_route->record_enabled(), Session::rt_cleanup, Controllable::InverseGroup); } } else if (Keyboard::is_context_menu_event (ev)) { diff --git a/libs/ardour/route_group_member.cc b/libs/ardour/route_group_member.cc index 6ab2ade21e..d0701f57da 100644 --- a/libs/ardour/route_group_member.cc +++ b/libs/ardour/route_group_member.cc @@ -40,7 +40,8 @@ bool RouteGroupMember::use_group (PBD::Controllable::GroupControlDisposition gcd, bool (RouteGroup::*predicate)(void) const) const { return (gcd != PBD::Controllable::NoGroup) && - (_route_group && - ((gcd == PBD::Controllable::WholeGroup) || - (_route_group->is_active() && (_route_group->*predicate)()))); + _route_group && + (_route_group->*predicate)() && + (((_route_group->is_active()) && (gcd != PBD::Controllable::InverseGroup)) || + ((!_route_group->is_active()) && (gcd == PBD::Controllable::InverseGroup))); } diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc index 70a62e5b75..6c25270421 100644 --- a/libs/ardour/session.cc +++ b/libs/ardour/session.cc @@ -3673,7 +3673,7 @@ Session::route_solo_changed (bool self_solo_change, Controllable::GroupControlDi * The first argument to the signal that this method is connected to is the * GroupControlDisposition value that was used to change solo. * - * If the solo change was done with group semantics (either WholeGroup + * If the solo change was done with group semantics (either InverseGroup * (force the entire group to change even if the group shared solo is * disabled) or UseGroup (use the group, which may or may not have the * shared solo property enabled)) then as we propagate the change to diff --git a/libs/pbd/enums.cc b/libs/pbd/enums.cc index 5e68824bac..e8bb80742d 100644 --- a/libs/pbd/enums.cc +++ b/libs/pbd/enums.cc @@ -41,7 +41,7 @@ setup_libpbd_enums () REGISTER_CLASS_ENUM (Controllable, GainLike); REGISTER (controllable_flags); - REGISTER_CLASS_ENUM (Controllable, WholeGroup); + REGISTER_CLASS_ENUM (Controllable, InverseGroup); REGISTER_CLASS_ENUM (Controllable, UseGroup); REGISTER_CLASS_ENUM (Controllable, NoGroup); REGISTER (controllable_group_disposition); diff --git a/libs/pbd/pbd/controllable.h b/libs/pbd/pbd/controllable.h index 727153a277..51c9c64be1 100644 --- a/libs/pbd/pbd/controllable.h +++ b/libs/pbd/pbd/controllable.h @@ -82,7 +82,7 @@ class LIBPBD_API Controllable : public PBD::StatefulDestructible { */ enum GroupControlDisposition { - WholeGroup, /* set all controls in the same "group" as this one */ + InverseGroup, /* set all controls in the same "group" as this one */ NoGroup, /* set only this control */ UseGroup /* use group settings to decide which group controls are altered */ };