summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gtk2_ardour/processor_box.cc18
-rw-r--r--gtk2_ardour/processor_box.h4
2 files changed, 13 insertions, 9 deletions
diff --git a/gtk2_ardour/processor_box.cc b/gtk2_ardour/processor_box.cc
index 2782d2cff8..9ac57a356c 100644
--- a/gtk2_ardour/processor_box.cc
+++ b/gtk2_ardour/processor_box.cc
@@ -2040,7 +2040,7 @@ ProcessorBox::one_processor_can_be_edited ()
}
Gtk::Window*
-ProcessorBox::get_editor_window (boost::shared_ptr<Processor> processor)
+ProcessorBox::get_editor_window (boost::shared_ptr<Processor> processor, bool use_custom)
{
boost::shared_ptr<Send> send;
boost::shared_ptr<InternalSend> internal_send;
@@ -2119,8 +2119,7 @@ ProcessorBox::get_editor_window (boost::shared_ptr<Processor> processor)
Window* w = get_processor_ui (plugin_insert);
if (w == 0) {
-
- plugin_ui = new PluginUIWindow (plugin_insert, false, Config->get_use_plugin_own_gui());
+ plugin_ui = new PluginUIWindow (plugin_insert, false, use_custom);
plugin_ui->set_title (generate_processor_title (plugin_insert));
set_processor_ui (plugin_insert, plugin_ui);
@@ -2438,6 +2437,7 @@ ProcessorBox::edit_processor (boost::shared_ptr<Processor> processor)
ProcessorWindowProxy* proxy = find_window_proxy (processor);
if (proxy) {
+ proxy->set_custom_ui_mode (Config->get_use_plugin_own_gui ());
proxy->toggle ();
}
}
@@ -2452,6 +2452,7 @@ ProcessorBox::generic_edit_processor (boost::shared_ptr<Processor> processor)
ProcessorWindowProxy* proxy = find_window_proxy (processor);
if (proxy) {
+ proxy->set_custom_ui_mode (false);
proxy->toggle ();
}
}
@@ -2629,6 +2630,7 @@ ProcessorWindowProxy::ProcessorWindowProxy (string const & name, ProcessorBox* b
, _processor_box (box)
, _processor (processor)
, is_custom (false)
+ , want_custom (false)
{
}
@@ -2648,8 +2650,7 @@ ProcessorWindowProxy::get (bool create)
if (!p) {
return 0;
}
-
- if (_window && (is_custom != Config->get_use_plugin_own_gui ())) {
+ if (_window && (is_custom != want_custom)) {
/* drop existing window - wrong type */
drop_window ();
}
@@ -2659,8 +2660,8 @@ ProcessorWindowProxy::get (bool create)
return 0;
}
- _window = _processor_box->get_editor_window (p);
- is_custom = Config->get_use_plugin_own_gui();
+ is_custom = want_custom;
+ _window = _processor_box->get_editor_window (p, is_custom);
if (_window) {
setup ();
@@ -2673,10 +2674,11 @@ ProcessorWindowProxy::get (bool create)
void
ProcessorWindowProxy::toggle ()
{
- if (_window && (is_custom != Config->get_use_plugin_own_gui ())) {
+ if (_window && (is_custom != want_custom)) {
/* drop existing window - wrong type */
drop_window ();
}
+ is_custom = want_custom;
WM::ProxyBase::toggle ();
}
diff --git a/gtk2_ardour/processor_box.h b/gtk2_ardour/processor_box.h
index c279ffa917..7d80abdc68 100644
--- a/gtk2_ardour/processor_box.h
+++ b/gtk2_ardour/processor_box.h
@@ -88,6 +88,7 @@ class ProcessorWindowProxy : public WM::ProxyBase
ARDOUR::SessionHandlePtr* session_handle();
void toggle();
+ void set_custom_ui_mode(bool use_custom) { want_custom = use_custom; }
bool marked;
@@ -95,6 +96,7 @@ class ProcessorWindowProxy : public WM::ProxyBase
ProcessorBox* _processor_box;
boost::weak_ptr<ARDOUR::Processor> _processor;
bool is_custom;
+ bool want_custom;
};
class ProcessorEntry : public Gtkmm2ext::DnDVBoxChild, public sigc::trackable
@@ -257,7 +259,7 @@ class ProcessorBox : public Gtk::HBox, public PluginInterestedObject, public ARD
Gtk::Window* get_processor_ui (boost::shared_ptr<ARDOUR::Processor>) const;
/* a WindowProxy object can use this */
- Gtk::Window* get_editor_window (boost::shared_ptr<ARDOUR::Processor>);
+ Gtk::Window* get_editor_window (boost::shared_ptr<ARDOUR::Processor>, bool);
Gtk::Window* get_generic_editor_window (boost::shared_ptr<ARDOUR::Processor>);
void edit_processor (boost::shared_ptr<ARDOUR::Processor>);