remove awful, inobvious, wrong and no longer necessary "_i_am_the_modifier" crap from RouteUI, except in one case where it might be useful

Conflicts:
	gtk2_ardour/route_ui.cc
This commit is contained in:
Paul Davis 2014-07-10 11:54:59 -04:00
parent cff24575d9
commit 8e79c77dfc

View file

@ -350,7 +350,6 @@ RouteUI::mute_press (GdkEventButton* ev)
DisplaySuspender ds;
_session->set_mute (rl, !_route->muted());
}
return true;
@ -359,13 +358,11 @@ RouteUI::mute_press (GdkEventButton* ev)
bool
RouteUI::mute_release (GdkEventButton*)
{
if (!_i_am_the_modifier) {
if (_mute_release){
DisplaySuspender ds;
_session->set_mute (_mute_release->routes, _mute_release->active, Session::rt_cleanup, true);
delete _mute_release;
_mute_release = 0;
}
if (_mute_release){
DisplaySuspender ds;
_session->set_mute (_mute_release->routes, _mute_release->active, Session::rt_cleanup, true);
delete _mute_release;
_mute_release = 0;
}
return true;
@ -382,133 +379,133 @@ RouteUI::solo_press(GdkEventButton* ev)
multiple_solo_change = false;
/* Goal here is to use Ctrl as the modifier on all platforms.
This is questionable design, but here's how we do it.
*/
int control_modifier;
#ifdef __APPLE__
control_modifier = Keyboard::SecondaryModifier;
#endif
#ifdef _WIN32
control_modifier = Keyboard::PrimaryModifier;
control_modifier = Keyboard::SecondaryModifier; /* Control */
#else
/* Anything except OS X */
control_modifier = Keyboard::PrimaryModifier; /* Control */
#endif
if (!_i_am_the_modifier) {
if (Keyboard::is_context_menu_event (ev)) {
if (solo_menu == 0) {
build_solo_menu ();
}
solo_menu->popup (1, ev->time);
} else {
if (Keyboard::is_button2_event (ev)) {
// Primary-button2 click is the midi binding click
// button2-click is "momentary"
if (solo_button.on_button_press_event (ev)) {
return true;
if (Keyboard::is_context_menu_event (ev)) {
if (solo_menu == 0) {
build_solo_menu ();
}
_solo_release = new SoloMuteRelease (_route->self_soloed());
}
solo_menu->popup (1, ev->time);
} else {
if (Keyboard::is_button2_event (ev)) {
// Primary-button2 click is the midi binding click
// button2-click is "momentary"
if (solo_button.on_button_press_event (ev)) {
return true;
}
_solo_release = new SoloMuteRelease (_route->self_soloed());
}
if (ev->button == 1 || Keyboard::is_button2_event (ev)) {
if (ev->button == 1 || Keyboard::is_button2_event (ev)) {
if (Keyboard::modifier_state_equals (ev->state, Keyboard::ModifierMask (Keyboard::PrimaryModifier|Keyboard::TertiaryModifier))) {
if (Keyboard::modifier_state_equals (ev->state, Keyboard::ModifierMask (Keyboard::PrimaryModifier|Keyboard::TertiaryModifier))) {
/* Primary-Tertiary-click applies change to all routes */
/* Primary-Tertiary-click applies change to all routes */
if (_solo_release) {
_solo_release->routes = _session->get_routes ();
}
DisplaySuspender ds;
if (Config->get_solo_control_is_listen_control()) {
_session->set_listen (_session->get_routes(), !_route->listening_via_monitor(), Session::rt_cleanup, true);
} else {
_session->set_solo (_session->get_routes(), !_route->self_soloed(), Session::rt_cleanup, true);
}
} else if (Keyboard::modifier_state_contains (ev->state, Keyboard::ModifierMask (Keyboard::PrimaryModifier|Keyboard::SecondaryModifier))) {
// Primary-Secondary-click: exclusively solo this track
if (_solo_release) {
_solo_release->exclusive = true;
boost::shared_ptr<RouteList> routes = _session->get_routes();
for (RouteList::iterator i = routes->begin(); i != routes->end(); ++i) {
if ((*i)->soloed ()) {
_solo_release->routes_on->push_back (*i);
} else {
_solo_release->routes_off->push_back (*i);
}
}
}
if (Config->get_solo_control_is_listen_control()) {
/* ??? we need a just_one_listen() method */
} else {
DisplaySuspender ds;
_session->set_just_one_solo (_route, true);
}
} else if (Keyboard::modifier_state_equals (ev->state, control_modifier)) {
// control-click (SecondaryModifier): toggle solo isolated status
_route->set_solo_isolated (!_route->solo_isolated(), this);
delete _solo_release;
_solo_release = 0;
} else if (Keyboard::modifier_state_equals (ev->state, Keyboard::PrimaryModifier)) {
/* Primary-button1: solo mix group.
NOTE: Primary-button2 is MIDI learn.
*/
/* Primary-button1 applies change to the mix group even if it is not active
NOTE: Primary-button2 is MIDI learn.
*/
boost::shared_ptr<RouteList> rl;
if (ev->button == 1) {
if (_route->route_group()) {
rl = _route->route_group()->route_list();
if (_solo_release) {
_solo_release->routes = rl;
}
} else {
rl.reset (new RouteList);
rl->push_back (_route);
}
DisplaySuspender ds;
if (Config->get_solo_control_is_listen_control()) {
_session->set_listen (rl, !_route->listening_via_monitor(), Session::rt_cleanup, true);
} else {
_session->set_solo (rl, !_route->self_soloed(), Session::rt_cleanup, true);
}
}
if (_solo_release) {
_solo_release->routes = _session->get_routes ();
}
DisplaySuspender ds;
if (Config->get_solo_control_is_listen_control()) {
_session->set_listen (_session->get_routes(), !_route->listening_via_monitor(), Session::rt_cleanup, true);
} else {
_session->set_solo (_session->get_routes(), !_route->self_soloed(), Session::rt_cleanup, true);
}
/* click: solo this route */
} else if (Keyboard::modifier_state_contains (ev->state, Keyboard::ModifierMask (Keyboard::PrimaryModifier|Keyboard::SecondaryModifier))) {
boost::shared_ptr<RouteList> rl (new RouteList);
rl->push_back (route());
// Primary-Secondary-click: exclusively solo this track
if (_solo_release) {
_solo_release->routes = rl;
if (_solo_release) {
_solo_release->exclusive = true;
boost::shared_ptr<RouteList> routes = _session->get_routes();
for (RouteList::iterator i = routes->begin(); i != routes->end(); ++i) {
if ((*i)->soloed ()) {
_solo_release->routes_on->push_back (*i);
} else {
_solo_release->routes_off->push_back (*i);
}
}
}
if (Config->get_solo_control_is_listen_control()) {
/* ??? we need a just_one_listen() method */
} else {
DisplaySuspender ds;
_session->set_just_one_solo (_route, true);
}
} else if (Keyboard::modifier_state_equals (ev->state, control_modifier)) {
// control-click (SecondaryModifier): toggle solo isolated status
_route->set_solo_isolated (!_route->solo_isolated(), this);
delete _solo_release;
_solo_release = 0;
} else if (Keyboard::modifier_state_equals (ev->state, Keyboard::PrimaryModifier)) {
/* Primary-button1: solo mix group.
NOTE: Primary-button2 is MIDI learn.
*/
/* Primary-button1 applies change to the mix group even if it is not active
NOTE: Primary-button2 is MIDI learn.
*/
boost::shared_ptr<RouteList> rl;
if (ev->button == 1) {
if (_route->route_group()) {
rl = _route->route_group()->route_list();
if (_solo_release) {
_solo_release->routes = rl;
}
} else {
rl.reset (new RouteList);
rl->push_back (_route);
}
DisplaySuspender ds;
if (Config->get_solo_control_is_listen_control()) {
_session->set_listen (rl, !_route->listening_via_monitor());
_session->set_listen (rl, !_route->listening_via_monitor(), Session::rt_cleanup, true);
} else {
_session->set_solo (rl, !_route->self_soloed());
_session->set_solo (rl, !_route->self_soloed(), Session::rt_cleanup, true);
}
}
} else {
/* click: solo this route */
boost::shared_ptr<RouteList> rl (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());
} else {
_session->set_solo (rl, !_route->self_soloed());
}
}
}
}
@ -519,22 +516,21 @@ RouteUI::solo_press(GdkEventButton* ev)
bool
RouteUI::solo_release (GdkEventButton*)
{
if (!_i_am_the_modifier) {
if (_solo_release) {
if (_solo_release) {
if (_solo_release->exclusive) {
if (_solo_release->exclusive) {
} else {
DisplaySuspender ds;
if (Config->get_solo_control_is_listen_control()) {
_session->set_listen (_solo_release->routes, _solo_release->active, Session::rt_cleanup, true);
} else {
DisplaySuspender ds;
if (Config->get_solo_control_is_listen_control()) {
_session->set_listen (_solo_release->routes, _solo_release->active, Session::rt_cleanup, true);
} else {
_session->set_solo (_solo_release->routes, _solo_release->active, Session::rt_cleanup, true);
}
_session->set_solo (_solo_release->routes, _solo_release->active, Session::rt_cleanup, true);
}
delete _solo_release;
_solo_release = 0;
}
delete _solo_release;
_solo_release = 0;
}
return true;
@ -564,7 +560,7 @@ RouteUI::rec_enable_press(GdkEventButton* ev)
}
// if (!_i_am_the_modifier && is_track() && rec_enable_button) {
if (!_i_am_the_modifier && is_track()) {
if (!is_track()) {
if (Keyboard::is_button2_event (ev)) {
@ -883,7 +879,7 @@ RouteUI::show_sends_press(GdkEventButton* ev)
return true;
}
if (!_i_am_the_modifier && !is_track()) {
if (!is_track()) {
if (Keyboard::is_button2_event (ev) && Keyboard::modifier_state_equals (ev->state, Keyboard::PrimaryModifier)) {
@ -1774,8 +1770,6 @@ RouteUI::setup_invert_buttons ()
void
RouteUI::set_invert_button_state ()
{
++_i_am_the_modifier;
uint32_t const N = _route->input()->n_ports().n_audio();
if (N > _max_invert_buttons) {
@ -1803,8 +1797,6 @@ RouteUI::set_invert_button_state ()
}
}
--_i_am_the_modifier;
}
bool