X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Froute_group_member.cc;h=280d193fba1d90dc11b3cff20b18c878529aa2ff;hb=91ab5e31751105d59386aab6a6e16ac5582904dc;hp=3caa7cd1d0e8fc1db39639769ae4ddc8d4506e46;hpb=8f930477be9e2c88859a8ea30b213fba3f7fc443;p=ardour.git diff --git a/libs/ardour/route_group_member.cc b/libs/ardour/route_group_member.cc index 3caa7cd1d0..280d193fba 100644 --- a/libs/ardour/route_group_member.cc +++ b/libs/ardour/route_group_member.cc @@ -18,6 +18,7 @@ #include "ardour/libardour_visibility.h" #include "ardour/route_group_member.h" +#include "ardour/route_group.h" using namespace ARDOUR; @@ -34,3 +35,14 @@ RouteGroupMember::set_route_group (RouteGroup *rg) _route_group = rg; route_group_changed (); /* EMIT SIGNAL */ } + +bool +RouteGroupMember::use_group (PBD::Controllable::GroupControlDisposition gcd, bool (RouteGroup::*predicate)(void) const) const +{ + bool active_for_predicate = _route_group && (_route_group->*predicate)() && _route_group->is_active(); + + return ((gcd != PBD::Controllable::NoGroup) && (gcd != PBD::Controllable::ForGroup)) && + _route_group && + ((active_for_predicate && (gcd != PBD::Controllable::InverseGroup)) || + (!active_for_predicate && (gcd == PBD::Controllable::InverseGroup))); +}