summaryrefslogtreecommitdiff
path: root/gtk2_ardour/route_time_axis.cc
diff options
context:
space:
mode:
authorCarl Hetherington <carl@carlh.net>2010-06-08 21:48:38 +0000
committerCarl Hetherington <carl@carlh.net>2010-06-08 21:48:38 +0000
commit8dd31447be22c20a51f019c8ea77c27ba975815c (patch)
treee450a2fa5d085a0e396a43ba9a18a4135b3fad6b /gtk2_ardour/route_time_axis.cc
parent2067937ecfb9e2db2e22631478c5c4548e0c47c7 (diff)
Fix handling of the mapping between parameters and automation CheckMenuItems. Should fix #3206, #3215 and the remainder of #3228.
git-svn-id: svn://localhost/ardour2/branches/3.0@7245 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/route_time_axis.cc')
-rw-r--r--gtk2_ardour/route_time_axis.cc23
1 files changed, 16 insertions, 7 deletions
diff --git a/gtk2_ardour/route_time_axis.cc b/gtk2_ardour/route_time_axis.cc
index 9813a985fc..49c49a3734 100644
--- a/gtk2_ardour/route_time_axis.cc
+++ b/gtk2_ardour/route_time_axis.cc
@@ -264,6 +264,7 @@ RouteTimeAxisView::post_construct ()
update_diskstream_display ();
+ _subplugin_menu_map.clear ();
subplugin_menu.items().clear ();
_route->foreach_processor (sigc::mem_fun (*this, &RouteTimeAxisView::add_processor_to_subplugin_menu));
_route->foreach_processor (sigc::mem_fun (*this, &RouteTimeAxisView::add_existing_processor_automation_curves));
@@ -397,6 +398,7 @@ RouteTimeAxisView::build_automation_action_menu ()
detach_menu (subplugin_menu);
+ _main_automation_menu_map.clear ();
delete automation_action_menu;
automation_action_menu = new Menu;
@@ -1689,8 +1691,9 @@ RouteTimeAxisView::show_existing_automation ()
i->second->get_state_node()->add_property ("shown", X_("yes"));
Gtk::CheckMenuItem* menu = automation_child_menu_item (i->first);
- assert (menu);
- menu->set_active(true);
+ if (menu) {
+ menu->set_active(true);
+ }
}
}
@@ -2008,7 +2011,7 @@ RouteTimeAxisView::add_processor_to_subplugin_menu (boost::weak_ptr<Processor> p
items.push_back (CheckMenuElem (name));
mitem = dynamic_cast<CheckMenuItem*> (&items.back());
- _parameter_menu_map[*i] = mitem;
+ _subplugin_menu_map[*i] = mitem;
if (has_visible_automation.find((*i)) != has_visible_automation.end()) {
mitem->set_active(true);
@@ -2089,6 +2092,7 @@ RouteTimeAxisView::processors_changed (RouteProcessorChange c)
(*i)->valid = false;
}
+ _subplugin_menu_map.clear ();
subplugin_menu.items().clear ();
_route->foreach_processor (sigc::mem_fun (*this, &RouteTimeAxisView::add_processor_to_subplugin_menu));
@@ -2373,10 +2377,15 @@ RouteTimeAxisView::set_button_names ()
Gtk::CheckMenuItem*
RouteTimeAxisView::automation_child_menu_item (Evoral::Parameter param)
{
- ParameterMenuMap::iterator i = _parameter_menu_map.find (param);
- if (i == _parameter_menu_map.end()) {
- return 0;
+ ParameterMenuMap::iterator i = _main_automation_menu_map.find (param);
+ if (i != _main_automation_menu_map.end()) {
+ return i->second;
+ }
+
+ i = _subplugin_menu_map.find (param);
+ if (i != _subplugin_menu_map.end()) {
+ return i->second;
}
- return i->second;
+ return 0;
}