diff --git a/gtk2_ardour/processor_box.cc b/gtk2_ardour/processor_box.cc index ad3666c006..514d7ede13 100644 --- a/gtk2_ardour/processor_box.cc +++ b/gtk2_ardour/processor_box.cc @@ -715,7 +715,7 @@ ProcessorEntry::show_all_controls () (*i)->set_visible (true); } - _parent->update_gui_object_state (this); + _parent->update_gui_object_state (this, true); } void @@ -725,7 +725,7 @@ ProcessorEntry::hide_all_controls () (*i)->set_visible (false); } - _parent->update_gui_object_state (this); + _parent->update_gui_object_state (this, true); } void @@ -942,14 +942,14 @@ ProcessorEntry::toggle_inline_display_visibility () } else { _plugin_display->show(); } - _parent->update_gui_object_state (this); + _parent->update_gui_object_state (this, true); } void ProcessorEntry::toggle_control_visibility (Control* c) { c->set_visible (!c->visible ()); - _parent->update_gui_object_state (this); + _parent->update_gui_object_state (this, true); } Menu* @@ -4691,7 +4691,7 @@ ProcessorBox::entry_gui_object_state (ProcessorEntry* entry) } void -ProcessorBox::update_gui_object_state (ProcessorEntry* entry) +ProcessorBox::update_gui_object_state (ProcessorEntry* entry, bool emit) { XMLNode* proc = entry_gui_object_state (entry); if (!proc) { @@ -4701,6 +4701,12 @@ ProcessorBox::update_gui_object_state (ProcessorEntry* entry) /* XXX: this is a bit inefficient; we just remove all child nodes and re-add them */ proc->remove_nodes_and_delete (X_("Object")); entry->add_control_state (proc); + + /* notify other strips to update */ + if (emit && _route) { + PBD::Unwinder uw (no_processor_redisplay, true); + _route->processors_changed (RouteProcessorChange ()); + } } bool diff --git a/gtk2_ardour/processor_box.h b/gtk2_ardour/processor_box.h index 7e0b09b199..1391a99e6c 100644 --- a/gtk2_ardour/processor_box.h +++ b/gtk2_ardour/processor_box.h @@ -461,7 +461,7 @@ public: void edit_processor (std::shared_ptr); void generic_edit_processor (std::shared_ptr); - void update_gui_object_state (ProcessorEntry *); + void update_gui_object_state (ProcessorEntry *, bool emit = false); sigc::signal > ProcessorSelected; sigc::signal > ProcessorUnselected;