From a92dddda256ca55b49fc6de6d2ba657816cd5b67 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Thu, 12 Dec 2019 03:01:31 +0100 Subject: Fix automation dropdown menu-item active state Extra XML/GUI has not been in use since ages. Automation Lane visibility is saved as GUIObjectState. This properly marks DropDown Menu items as active when a Plugin Automation Lane is displayed --- gtk2_ardour/automation_time_axis.cc | 29 ----------------------------- gtk2_ardour/automation_time_axis.h | 2 -- gtk2_ardour/route_time_axis.cc | 13 ++++++------- 3 files changed, 6 insertions(+), 38 deletions(-) diff --git a/gtk2_ardour/automation_time_axis.cc b/gtk2_ardour/automation_time_axis.cc index 92af663e76..17e4877f3a 100644 --- a/gtk2_ardour/automation_time_axis.cc +++ b/gtk2_ardour/automation_time_axis.cc @@ -1009,35 +1009,6 @@ AutomationTimeAxisView::set_state (const XMLNode&, int /*version*/) return 0; } -void -AutomationTimeAxisView::what_has_visible_automation (const boost::shared_ptr& automatable, set& visible) -{ - /* this keeps "knowledge" of how we store visibility information - in XML private to this class. - */ - - assert (automatable); - - Automatable::Controls& controls (automatable->controls()); - - for (Automatable::Controls::iterator i = controls.begin(); i != controls.end(); ++i) { - - boost::shared_ptr ac = boost::dynamic_pointer_cast (i->second); - - if (ac && ac->alist()) { - - const XMLNode* gui_node = ac->extra_xml ("GUI"); - - if (gui_node) { - bool shown; - if (gui_node->get_property ("shown", shown) && shown) { - visible.insert (i->first); - } - } - } - } -} - /** @return true if this view has any automation data to display */ bool diff --git a/gtk2_ardour/automation_time_axis.h b/gtk2_ardour/automation_time_axis.h index 95efd56812..e6643466b9 100644 --- a/gtk2_ardour/automation_time_axis.h +++ b/gtk2_ardour/automation_time_axis.h @@ -133,8 +133,6 @@ public: return _show_regions; } - static void what_has_visible_automation (const boost::shared_ptr& automatable, std::set& visible); - protected: /* Note that for MIDI controller "automation" (in regions), all of these * may be set. In this case, _automatable is likely _route so the diff --git a/gtk2_ardour/route_time_axis.cc b/gtk2_ardour/route_time_axis.cc index f40ee82c72..6a83712014 100644 --- a/gtk2_ardour/route_time_axis.cc +++ b/gtk2_ardour/route_time_axis.cc @@ -2100,9 +2100,6 @@ RouteTimeAxisView::add_processor_to_subplugin_menu (boost::weak_ptr p items.clear (); - std::set has_visible_automation; - AutomationTimeAxisView::what_has_visible_automation (processor, has_visible_automation); - for (std::set::const_iterator i = automatable.begin(); i != automatable.end(); ++i) { ProcessorAutomationNode* pan; @@ -2119,10 +2116,6 @@ RouteTimeAxisView::add_processor_to_subplugin_menu (boost::weak_ptr p _subplugin_menu_map[*i] = mitem; - if (has_visible_automation.find((*i)) != has_visible_automation.end()) { - mitem->set_active(true); - } - if ((pan = find_processor_automation_node (processor, *i)) == 0) { /* new item */ @@ -2137,6 +2130,12 @@ RouteTimeAxisView::add_processor_to_subplugin_menu (boost::weak_ptr p } + boost::shared_ptr atav = automation_child (*i); + bool visible; + if (atav && atav->get_gui_property ("visible", visible)) { + mitem->set_active(true); + } + mitem->signal_toggled().connect (sigc::bind (sigc::mem_fun(*this, &RouteTimeAxisView::processor_menu_item_toggled), rai, pan)); } -- cgit v1.2.3