diff --git a/gtk2_ardour/mixer_strip.cc b/gtk2_ardour/mixer_strip.cc index c7adb6b01c..75f5e95dce 100644 --- a/gtk2_ardour/mixer_strip.cc +++ b/gtk2_ardour/mixer_strip.cc @@ -2099,6 +2099,14 @@ MixerStrip::hide_master_spacer (bool yn) } } +void +MixerStrip::create_trigger_display (boost::shared_ptr tb) +{ + if (!trigger_display) { + trigger_display = new TriggerBoxWidget (*(tb.get())); /* XXX fix to use shared ptr */ + } +} + void MixerStrip::toggle_trigger_display () { @@ -2108,11 +2116,9 @@ MixerStrip::toggle_trigger_display () if (trigger_display->get_parent() == &global_vpacker) { global_vpacker.remove (*trigger_display); - global_vpacker.pack_start (processor_box, true, true); - global_vpacker.reorder_child (processor_box, 4); } else { - global_vpacker.remove (processor_box); 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 9b3096de07..e2f0a382ed 100644 --- a/gtk2_ardour/mixer_strip.h +++ b/gtk2_ardour/mixer_strip.h @@ -70,6 +70,7 @@ namespace ARDOUR { class PortInsert; class Bundle; class Plugin; + class TriggerBox; } namespace Gtk { class Window; @@ -153,6 +154,7 @@ public: void set_selected (bool yn); void toggle_trigger_display (); + void create_trigger_display (boost::shared_ptr); static MixerStrip* entered_mixer_strip() { return _entered_mixer_strip; } diff --git a/gtk2_ardour/processor_box.cc b/gtk2_ardour/processor_box.cc index 1837963b75..55d63c374a 100644 --- a/gtk2_ardour/processor_box.cc +++ b/gtk2_ardour/processor_box.cc @@ -3808,7 +3808,7 @@ ProcessorBox::get_editor_window (boost::shared_ptr processor, bool us boost::shared_ptr retrn; boost::shared_ptr plugin_insert; boost::shared_ptr port_insert; - boost::shared_ptr triggerbox; + #ifdef HAVE_BEATBOX boost::shared_ptr beatbox; #endif @@ -3897,26 +3897,6 @@ ProcessorBox::get_editor_window (boost::shared_ptr processor, bool us gidget = plugin_ui; - } else if ((triggerbox = boost::dynamic_pointer_cast (processor)) != 0) { - - if (!ARDOUR_UI_UTILS::engine_is_running ()) { - return 0; - } - - TriggerBoxWindow* tw; - - Window* w = get_processor_ui (triggerbox); - - if (w == 0) { - tw = new TriggerBoxWindow (*(triggerbox.get())); /* XXX fix me to use shared ptr */ - set_processor_ui (triggerbox, tw); - - } else { - tw = dynamic_cast (w); - } - - gidget = tw; - } else if ((port_insert = boost::dynamic_pointer_cast (processor)) != 0) { if (!ARDOUR_UI_UTILS::engine_is_running ()) { @@ -4311,6 +4291,23 @@ ProcessorBox::edit_aux_send (boost::shared_ptr processor) return true; } +bool +ProcessorBox::edit_triggerbox (boost::shared_ptr processor) +{ + boost::shared_ptr tb; + + if ((tb = boost::dynamic_pointer_cast (processor)) == 0) { + return false; + } + + if (_parent_strip) { + _parent_strip->create_trigger_display (tb); + _parent_strip->toggle_trigger_display (); + } + + return true; +} + void ProcessorBox::edit_processor (boost::shared_ptr processor) { @@ -4320,6 +4317,9 @@ ProcessorBox::edit_processor (boost::shared_ptr processor) if (edit_aux_send (processor)) { return; } + if (edit_triggerbox (processor)) { + return; + } if (!ARDOUR_UI_UTILS::engine_is_running ()) { return; } diff --git a/gtk2_ardour/processor_box.h b/gtk2_ardour/processor_box.h index 0c408c1c04..bbb82634ac 100644 --- a/gtk2_ardour/processor_box.h +++ b/gtk2_ardour/processor_box.h @@ -438,7 +438,8 @@ public: void hide_things (); - bool edit_aux_send(boost::shared_ptr); + bool edit_aux_send (boost::shared_ptr); + bool edit_triggerbox (boost::shared_ptr); /* Everything except a WindowProxy object should use this to get the window */ Gtk::Window* get_processor_ui (boost::shared_ptr) const;