diff --git a/gtk2_ardour/mixer_strip.cc b/gtk2_ardour/mixer_strip.cc index 9f21de02ce..fc231aada4 100644 --- a/gtk2_ardour/mixer_strip.cc +++ b/gtk2_ardour/mixer_strip.cc @@ -112,6 +112,7 @@ MixerStrip::MixerStrip (Mixer_UI& mx, Session* sess, bool in_mixer) , processor_box (sess, boost::bind (&MixerStrip::plugin_selector, this), mx.selection(), this, in_mixer) , gpm (sess, 250) , panners (sess) + , trigger_display (-1., 8*16.) , button_size_group (Gtk::SizeGroup::create (Gtk::SIZE_GROUP_HORIZONTAL)) , rec_mon_table (2, 2) , solo_iso_table (1, 2) @@ -151,6 +152,7 @@ MixerStrip::MixerStrip (Mixer_UI& mx, Session* sess, boost::shared_ptr rt , processor_box (sess, boost::bind (&MixerStrip::plugin_selector, this), mx.selection(), this, in_mixer) , gpm (sess, 250) , panners (sess) + , trigger_display (-1., 8*16.) , button_size_group (Gtk::SizeGroup::create (Gtk::SIZE_GROUP_HORIZONTAL)) , rec_mon_table (2, 2) , solo_iso_table (1, 2) @@ -182,7 +184,6 @@ MixerStrip::init () group_menu = 0; route_ops_menu = 0; _width_owner = 0; - trigger_display = 0; _tmaster = new TriggerMaster (_tmaster_widget.root ()); @@ -327,6 +328,7 @@ MixerStrip::init () global_vpacker.pack_start (name_button, Gtk::PACK_SHRINK); global_vpacker.pack_start (input_button_box, Gtk::PACK_SHRINK); global_vpacker.pack_start (invert_button_box, Gtk::PACK_SHRINK); + global_vpacker.pack_start (trigger_display, true, true); global_vpacker.pack_start (_tmaster_widget, true, true); global_vpacker.pack_start (processor_box, true, true); global_vpacker.pack_start (panners, Gtk::PACK_SHRINK); @@ -406,6 +408,7 @@ MixerStrip::init () _visibility.add (&output_button, X_("Output"), _("Output"), false); _visibility.add (&_comment_button, X_("Comments"), _("Comments"), false); _visibility.add (&control_slave_ui, X_("VCA"), _("VCA Assigns"), false); + _visibility.add (&trigger_display, X_("Triggers"), _("Triggers"), false); parameter_changed (X_("mixer-element-visibility")); UIConfiguration::instance().ParameterChanged.connect (sigc::mem_fun (*this, &MixerStrip::parameter_changed)); @@ -544,11 +547,6 @@ MixerStrip::set_route (boost::shared_ptr rt) if (rt && route()) { std::cerr << "switching from " << rt->name() << " to " << route()->name() << std::endl; } - if (trigger_display && trigger_display->get_parent() == &global_vpacker) { - global_vpacker.remove (*trigger_display); - delete trigger_display; - trigger_display = 0; - } } RouteUI::set_route (rt); @@ -1674,18 +1672,8 @@ MixerStrip::revert_to_default_display () reset_strip_style (); - if (_route->triggerbox() && UIConfiguration::instance().get_show_triggers_inline()) { - create_trigger_display (_route->triggerbox()); - if (trigger_display->get_parent() != &global_vpacker) { - global_vpacker.pack_start (*trigger_display, Gtk::PACK_SHRINK); - trigger_display->show (); - global_vpacker.reorder_child (*trigger_display, 4); - } - } else { - if (trigger_display && (trigger_display->get_parent() == &global_vpacker)) { - global_vpacker.remove (*trigger_display); - } - } + set_trigger_display (_route->triggerbox()); + } void @@ -1838,11 +1826,7 @@ MixerStrip::parameter_changed (string p) } } } else if (p == "show-triggers-inline") { - boost::shared_ptr tb = route()->triggerbox(); - if (tb) { - create_trigger_display (tb); - toggle_trigger_display (); - } + /* XXX do something or get rid of this parameter */ } } @@ -2149,26 +2133,8 @@ MixerStrip::hide_master_spacer (bool yn) } void -MixerStrip::create_trigger_display (boost::shared_ptr tb) +MixerStrip::set_trigger_display (boost::shared_ptr tb) { - if (!trigger_display) { - trigger_display = new TriggerBoxWidget (-1., 8*16.); /* XXX fix to use shared ptr */ - trigger_display->set_triggerbox (tb.get()); - } + trigger_display.set_triggerbox (tb.get()); } -void -MixerStrip::toggle_trigger_display () -{ - if (!trigger_display) { - return; - } - - if (trigger_display->get_parent() == &global_vpacker) { - global_vpacker.remove (*trigger_display); - } else { - global_vpacker.pack_start (*trigger_display, true, true); - trigger_display->show (); - global_vpacker.reorder_child (*trigger_display, 4); - } -} diff --git a/gtk2_ardour/mixer_strip.h b/gtk2_ardour/mixer_strip.h index 5dfc7c529c..fe69cff0c7 100644 --- a/gtk2_ardour/mixer_strip.h +++ b/gtk2_ardour/mixer_strip.h @@ -60,6 +60,7 @@ #include "panner_ui.h" #include "enums.h" #include "processor_box.h" +#include "triggerbox_ui.h" #include "trigger_master.h" #include "visibility_group.h" @@ -154,8 +155,7 @@ public: void set_selected (bool yn); - void toggle_trigger_display (); - void create_trigger_display (boost::shared_ptr); + void set_trigger_display (boost::shared_ptr); static MixerStrip* entered_mixer_strip() { return _entered_mixer_strip; } @@ -192,7 +192,7 @@ private: ProcessorBox processor_box; GainMeter gpm; PannerUI panners; - TriggerBoxWidget* trigger_display; + TriggerBoxWidget trigger_display; Glib::RefPtr button_size_group;