13
0

Restore 'Edit with basic controls' plugin UI functionality.

Regression was introduced in 40944574c

Compared to before 40944574c it is no longer possible to have
both custom and basic open at the same time.
On the upside window stacking and raise-to-top works properly.
This commit is contained in:
Robin Gareus 2013-05-19 02:28:36 +02:00
parent 126d592e8a
commit 1acf8bdc67
2 changed files with 13 additions and 9 deletions

View File

@ -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 ();
}

View File

@ -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>);