diff options
Diffstat (limited to 'gtk2_ardour/mixer_strip.cc')
-rw-r--r-- | gtk2_ardour/mixer_strip.cc | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/gtk2_ardour/mixer_strip.cc b/gtk2_ardour/mixer_strip.cc index 56c98c2024..02e483fea4 100644 --- a/gtk2_ardour/mixer_strip.cc +++ b/gtk2_ardour/mixer_strip.cc @@ -17,6 +17,7 @@ */ #include <cmath> +#include <list> #include <algorithm> #include <sigc++/bind.h> @@ -227,12 +228,6 @@ MixerStrip::init () button_table.set_homogeneous (false); button_table.set_spacings (0); - if (solo_button) { - button_size_group->add_widget (*solo_button); - } - if (mute_button) { - button_size_group->add_widget (*mute_button); - } if (solo_isolated_led) { button_size_group->add_widget (*solo_isolated_led); } @@ -255,8 +250,6 @@ MixerStrip::init () middle_button_table.set_homogeneous (true); middle_button_table.set_spacings (2); - middle_button_table.attach (*mute_button, 0, 1, 0, 1); - middle_button_table.attach (*solo_button, 1, 2, 0, 1); bottom_button_table.set_col_spacings (0); bottom_button_table.set_homogeneous (true); @@ -410,10 +403,23 @@ MixerStrip::set_route (boost::shared_ptr<Route> rt) revert_to_default_display (); + if (solo_button->get_parent()) { + middle_button_table.remove (*solo_button); + } + + if (mute_button->get_parent()) { + middle_button_table.remove (*mute_button); + } + if (route()->is_master()) { + middle_button_table.attach (*mute_button, 0, 2, 0, 1); solo_button->hide (); + mute_button->show (); rec_solo_table.hide (); } else { + middle_button_table.attach (*mute_button, 0, 1, 0, 1); + middle_button_table.attach (*solo_button, 1, 2, 0, 1); + mute_button->show (); solo_button->show (); rec_solo_table.show (); } |