summaryrefslogtreecommitdiff
path: root/gtk2_ardour/mixer_strip.cc
diff options
context:
space:
mode:
authorCarl Hetherington <carl@carlh.net>2011-11-03 01:44:17 +0000
committerCarl Hetherington <carl@carlh.net>2011-11-03 01:44:17 +0000
commit154c2a35d7a14eda847a6a610f5fbe8fb17109d8 (patch)
tree0ab60ea0bd686f2fde078a5ff3a0d7a74135f7d6 /gtk2_ardour/mixer_strip.cc
parent22d87a18dc602ef29a82f5c1fa68ba00ecacfe4b (diff)
Allow overrides of the user-set visibility stuff and use it to make sure the master bus doesn't get solo isolate etc. (#4431).
git-svn-id: svn://localhost/ardour2/branches/3.0@10407 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/mixer_strip.cc')
-rw-r--r--gtk2_ardour/mixer_strip.cc19
1 files changed, 17 insertions, 2 deletions
diff --git a/gtk2_ardour/mixer_strip.cc b/gtk2_ardour/mixer_strip.cc
index 4f4d400a56..288e9f830d 100644
--- a/gtk2_ardour/mixer_strip.cc
+++ b/gtk2_ardour/mixer_strip.cc
@@ -338,8 +338,8 @@ MixerStrip::init ()
are recognised when they occur.
*/
_visibility.add (&_invert_button_box, X_("PhaseInvert"), _("Phase Invert"));
- _visibility.add (solo_safe_led, X_("SoloSafe"), _("Solo Safe"));
- _visibility.add (solo_isolated_led, X_("SoloIsolated"), _("Solo Isolated"));
+ _visibility.add (solo_safe_led, X_("SoloSafe"), _("Solo Safe"), true, boost::bind (&MixerStrip::override_solo_visibility, this));
+ _visibility.add (solo_isolated_led, X_("SoloIsolated"), _("Solo Isolated"), true, boost::bind (&MixerStrip::override_solo_visibility, this));
_visibility.add (&_comment_button, X_("Comments"), _("Comments"));
_visibility.add (&group_button, X_("Group"), _("Group"));
_visibility.add (&meter_point_button, X_("MeterPoint"), _("Meter Point"));
@@ -2000,3 +2000,18 @@ MixerStrip::parameter_changed (string p)
_visibility.set_state (Config->get_mixer_strip_visibility ());
}
}
+
+/** Called to decide whether the solo isolate / solo lock button visibility should
+ * be overridden from that configured by the user. We do this for the master bus.
+ *
+ * @return optional value that is present if visibility state should be overridden.
+ */
+boost::optional<bool>
+MixerStrip::override_solo_visibility () const
+{
+ if (_route && _route->is_master ()) {
+ return boost::optional<bool> (false);
+ }
+
+ return boost::optional<bool> ();
+}