- _gain_group->set_active (_gain);
- _solo_group->set_active (_solo);
- _mute_group->set_active (_mute);
- _rec_enable_group->set_active (_recenable);
- _monitoring_group->set_active (_monitoring);
+ if (is_relative()) {
+ _gain_group->set_mode (ControlGroup::Mode (_gain_group->mode()|ControlGroup::Relative));
+ } else {
+ _gain_group->set_mode (ControlGroup::Mode (_gain_group->mode()&~ControlGroup::Relative));
+ }
+
+ if (_active) {
+ _gain_group->set_active (is_gain());
+ _solo_group->set_active (is_solo());
+ _mute_group->set_active (is_mute());
+ _rec_enable_group->set_active (is_recenable());
+ _monitoring_group->set_active (is_monitoring());
+ } else {
+ _gain_group->set_active (false);
+ _solo_group->set_active (false);
+ _mute_group->set_active (false);
+ _rec_enable_group->set_active (false);
+ _monitoring_group->set_active (false);
+ }