13
0

Fix automation lane visibility and indices - #8162

This fixes an issue with using
  StripableTimeAxisView::_automation_tracks
for PluginAutomation. The latter is indexed per-plugin in
  RouteTimeAxisView::processor_automation

Evoral::Parameter(PluginAutomation) is only unique per plugin,
and hence cannot be used in STAV.
This commit is contained in:
Robin Gareus 2020-06-01 06:34:22 +02:00
parent ef94663d1c
commit 72af571f0c
Signed by: rgareus
GPG Key ID: A090BCE02CF57F04
2 changed files with 15 additions and 4 deletions

View File

@ -1740,6 +1740,8 @@ RouteTimeAxisView::color_handler ()
void
RouteTimeAxisView::toggle_automation_track (const Evoral::Parameter& param)
{
assert (param.type() != PluginAutomation);
boost::shared_ptr<AutomationTimeAxisView> track = automation_child (param);
Gtk::CheckMenuItem* menu = automation_child_menu_item (param);
@ -2145,10 +2147,12 @@ RouteTimeAxisView::add_processor_to_subplugin_menu (boost::weak_ptr<Processor> p
}
boost::shared_ptr<AutomationTimeAxisView> atav = automation_child (*i);
boost::shared_ptr<AutomationTimeAxisView> atav = pan->view;
bool visible;
if (atav && atav->get_gui_property ("visible", visible)) {
mitem->set_active(true);
} else {
mitem->set_active(false);
}
mitem->signal_toggled().connect (sigc::bind (sigc::mem_fun(*this, &RouteTimeAxisView::processor_menu_item_toggled), rai, pan));

View File

@ -73,9 +73,14 @@ StripableTimeAxisView::add_automation_child (Evoral::Parameter param, boost::sha
add_child (track);
track->Hiding.connect (sigc::bind (sigc::mem_fun (*this, &StripableTimeAxisView::automation_track_hidden), param));
_automation_tracks[param] = track;
if (param.type() != PluginAutomation) {
/* PluginAutomation is handled by
* - RouteTimeAxisView::processor_automation_track_hidden
* - RouteTimeAxisView::processor_automation
*/
track->Hiding.connect (sigc::bind (sigc::mem_fun (*this, &StripableTimeAxisView::automation_track_hidden), param));
_automation_tracks[param] = track;
}
/* existing state overrides "show" argument */
bool visible;
@ -155,6 +160,7 @@ StripableTimeAxisView::update_mute_track_visibility ()
Gtk::CheckMenuItem*
StripableTimeAxisView::automation_child_menu_item (Evoral::Parameter param)
{
assert (param.type() != PluginAutomation);
ParameterMenuMap::iterator i = _main_automation_menu_map.find (param);
if (i != _main_automation_menu_map.end()) {
return i->second;
@ -186,6 +192,7 @@ StripableTimeAxisView::automation_track_hidden (Evoral::Parameter param)
boost::shared_ptr<AutomationTimeAxisView>
StripableTimeAxisView::automation_child(Evoral::Parameter param)
{
assert (param.type() != PluginAutomation);
AutomationTracks::iterator i = _automation_tracks.find(param);
if (i != _automation_tracks.end()) {
return i->second;