summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2019-12-12 03:01:31 +0100
committerRobin Gareus <robin@gareus.org>2019-12-12 03:02:48 +0100
commita92dddda256ca55b49fc6de6d2ba657816cd5b67 (patch)
tree1eff95b02a91d5eeca3af1c85a08ae1665a27456
parentff7fe6d4d6c0d966327f553118255444f5b589e3 (diff)
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
-rw-r--r--gtk2_ardour/automation_time_axis.cc29
-rw-r--r--gtk2_ardour/automation_time_axis.h2
-rw-r--r--gtk2_ardour/route_time_axis.cc13
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>& automatable, set<Evoral::Parameter>& 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<AutomationControl> ac = boost::dynamic_pointer_cast<AutomationControl> (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<ARDOUR::Automatable>& automatable, std::set<Evoral::Parameter>& 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<Processor> p
items.clear ();
- std::set<Evoral::Parameter> has_visible_automation;
- AutomationTimeAxisView::what_has_visible_automation (processor, has_visible_automation);
-
for (std::set<Evoral::Parameter>::const_iterator i = automatable.begin(); i != automatable.end(); ++i) {
ProcessorAutomationNode* pan;
@@ -2119,10 +2116,6 @@ RouteTimeAxisView::add_processor_to_subplugin_menu (boost::weak_ptr<Processor> 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<Processor> p
}
+ boost::shared_ptr<AutomationTimeAxisView> 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));
}