t->RecordEnableChanged.connect (route_connections, invalidator (*this), boost::bind (&RouteUI::route_rec_enable_changed, this), gui_context());
rec_enable_button->show();
- rec_enable_button->set_controllable (t->rec_enable_control());
+ rec_enable_button->set_controllable (t->rec_enable_control());
if (is_midi_track()) {
midi_track()->StepEditStatusChange.connect (route_connections, invalidator (*this),
} else if (Keyboard::modifier_state_equals (ev->state, Keyboard::PrimaryModifier)) {
- /* Primary-button1 applies change to the mix group even if it is not active
+ /* Primary-button1 inverts the implication of
+ the group being active. If the group is
+ active (for mute), then this modifier means
+ "do not apply to mute". If the group is
+ inactive (for mute), then this modifier
+ means "apply to route". This is all
+ accomplished by passing just the actual
+ route, along with the InverseGroup group
+ control disposition.
+
NOTE: Primary-button2 is MIDI learn.
*/
if (ev->button == 1) {
- if (_route->route_group()) {
-
- rl = _route->route_group()->route_list();
+ rl.reset (new RouteList);
+ rl->push_back (_route);
- if (_mute_release) {
- _mute_release->routes = rl;
- }
- } else {
- rl.reset (new RouteList);
- rl->push_back (_route);
+ if (_mute_release) {
+ _mute_release->routes = rl;
}
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 {
DisplaySuspender ds;
if (Config->get_solo_control_is_listen_control()) {
- _session->set_listen (_session->get_routes(), !_route->listening_via_monitor(), Session::rt_cleanup, Controllable::NoGroup);
+ _session->set_listen (_session->get_routes(), !_route->listening_via_monitor(), Session::rt_cleanup, Controllable::UseGroup);
} else {
- _session->set_solo (_session->get_routes(), !_route->self_soloed(), Session::rt_cleanup, Controllable::NoGroup);
+ _session->set_solo (_session->get_routes(), !_route->self_soloed(), Session::rt_cleanup, Controllable::UseGroup);
}
} else if (Keyboard::modifier_state_contains (ev->state, Keyboard::ModifierMask (Keyboard::PrimaryModifier|Keyboard::SecondaryModifier))) {
boost::shared_ptr<RouteList> rl;
if (ev->button == 1) {
- if (ARDOUR::Profile->get_mixbus() && _route->route_group()) {
- rl = _route->route_group()->route_list();
+ /* Primary-button1 inverts the implication of
+ the group being active. If the group is
+ active (for solo), then this modifier means
+ "do not apply to solo". If the group is
+ inactive (for mute), then this modifier
+ means "apply to route". This is all
+ accomplished by passing just the actual
+ route, along with the InverseGroup group
+ control disposition.
- if (_solo_release) {
- _solo_release->routes = rl;
- }
- } else {
- rl.reset (new RouteList);
- rl->push_back (_route);
+ NOTE: Primary-button2 is MIDI learn.
+ */
+
+ rl.reset (new RouteList);
+ rl->push_back (_route);
+
+ if (_solo_release) {
+ _solo_release->routes = rl;
}
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);
}
}
boost::shared_ptr<RouteList> rl;
- if (_route->route_group()) {
-
- rl = _route->route_group()->route_list();
-
- } else {
- rl.reset (new RouteList);
- rl->push_back (_route);
- }
+ rl.reset (new RouteList);
+ rl->push_back (_route);
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)) {
{
ENSURE_GUI_THREAD (*this, &RouteUI::map_frozen)
- AudioTrack* at = dynamic_cast<AudioTrack*>(_route.get());
+ AudioTrack* at = dynamic_cast<AudioTrack*>(_route.get());
if (at) {
switch (at->freeze_state()) {