summaryrefslogtreecommitdiff
path: root/gtk2_ardour/route_ui.cc
diff options
context:
space:
mode:
authorCarl Hetherington <carl@carlh.net>2011-11-03 00:42:16 +0000
committerCarl Hetherington <carl@carlh.net>2011-11-03 00:42:16 +0000
commit22d87a18dc602ef29a82f5c1fa68ba00ecacfe4b (patch)
treee726f9cb19487b1945ee1dc30b18463b429ac6f5 /gtk2_ardour/route_ui.cc
parentbcac4f1c96c6c5d67a145c38d2cb56429f0040da (diff)
Tidy up send-to button handling a bit, should fix #4426 and #4427.
git-svn-id: svn://localhost/ardour2/branches/3.0@10406 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/route_ui.cc')
-rw-r--r--gtk2_ardour/route_ui.cc47
1 files changed, 32 insertions, 15 deletions
diff --git a/gtk2_ardour/route_ui.cc b/gtk2_ardour/route_ui.cc
index 9bedb9b521..112b3eb73e 100644
--- a/gtk2_ardour/route_ui.cc
+++ b/gtk2_ardour/route_ui.cc
@@ -64,6 +64,8 @@ using namespace ARDOUR;
using namespace PBD;
uint32_t RouteUI::_max_invert_buttons = 3;
+sigc::signal<void, boost::shared_ptr<Route> > RouteUI::BusSendDisplayChanged;
+boost::weak_ptr<Route> RouteUI::_showing_sends_to;
RouteUI::RouteUI (ARDOUR::Session* sess)
: AxisView(sess)
@@ -165,6 +167,8 @@ RouteUI::init ()
monitor_disk_button->signal_button_press_event().connect (sigc::mem_fun(*this, &RouteUI::monitor_disk_press));
monitor_disk_button->signal_button_release_event().connect (sigc::mem_fun(*this, &RouteUI::monitor_disk_release));
+
+ BusSendDisplayChanged.connect (sigc::mem_fun (*this, &RouteUI::bus_send_display_changed));
}
void
@@ -258,6 +262,9 @@ RouteUI::set_route (boost::shared_ptr<Route> rp)
setup_invert_buttons ();
set_invert_button_state ();
+
+ boost::shared_ptr<Route> s = _showing_sends_to.lock ();
+ bus_send_display_changed (s);
}
void
@@ -888,22 +895,13 @@ RouteUI::show_sends_press(GdkEventButton* ev)
} else {
- /* change button state */
-
- show_sends_button->set_active_state (Active);
-
- /* start blinking */
+ boost::shared_ptr<Route> s = _showing_sends_to.lock ();
- if (show_sends_button->active_state()) {
- /* show sends to this bus */
- MixerStrip::SwitchIO (_route);
- send_blink_connection = ARDOUR_UI::instance()->Blink.connect (sigc::mem_fun(*this, &RouteUI::send_blink));
+ if (s == _route) {
+ set_showing_sends_to (boost::shared_ptr<Route> ());
} else {
- /* everybody back to normal */
- send_blink_connection.disconnect ();
- MixerStrip::SwitchIO (boost::shared_ptr<Route>());
+ set_showing_sends_to (_route);
}
-
}
}
@@ -924,9 +922,9 @@ RouteUI::send_blink (bool onoff)
}
if (onoff) {
- show_sends_button->set_state (STATE_ACTIVE);
+ show_sends_button->set_active_state (Gtkmm2ext::Active);
} else {
- show_sends_button->set_state (STATE_NORMAL);
+ show_sends_button->unset_active_state ();
}
}
@@ -1923,3 +1921,22 @@ RouteUI::color () const
return _color;
}
+
+void
+RouteUI::set_showing_sends_to (boost::shared_ptr<Route> send_to)
+{
+ _showing_sends_to = send_to;
+ BusSendDisplayChanged (send_to); /* EMIT SIGNAL */
+}
+
+void
+RouteUI::bus_send_display_changed (boost::shared_ptr<Route> send_to)
+{
+ if (_route == send_to) {
+ show_sends_button->set_active_state (Gtkmm2ext::Active);
+ send_blink_connection = ARDOUR_UI::instance()->Blink.connect (sigc::mem_fun (*this, &RouteUI::send_blink));
+ } else {
+ show_sends_button->unset_active_state ();
+ send_blink_connection.disconnect ();
+ }
+}