Restore visible automation lanes (#7914)
On session re-load only automation lanes with events were displayed, regardless of visibility state. This allowed for inconsistent state (menu showed them as visible even if they were not).
This commit is contained in:
parent
73c5bdd3cb
commit
1af5f37e46
@ -83,6 +83,18 @@ public:
|
||||
return false;
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
bool get_gui_property (const std::string& state_id, const std::string& property_name, T& value) const
|
||||
{
|
||||
std::string str = gui_object_state().get_string (state_id, property_name);
|
||||
|
||||
if (!str.empty ()) {
|
||||
return PBD::string_to<T>(str, value);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
void set_gui_property (const std::string& property_name, const std::string& value);
|
||||
void remove_gui_property (const std::string& property_name);
|
||||
|
||||
|
@ -2045,9 +2045,23 @@ RouteTimeAxisView::add_existing_processor_automation_curves (boost::weak_ptr<Pro
|
||||
}
|
||||
|
||||
set<Evoral::Parameter> existing;
|
||||
|
||||
processor->what_has_data (existing);
|
||||
|
||||
/* Also add explicitly visible */
|
||||
const std::set<Evoral::Parameter>& automatable = processor->what_can_be_automated ();
|
||||
for (std::set<Evoral::Parameter>::const_iterator i = automatable.begin(); i != automatable.end(); ++i) {
|
||||
boost::shared_ptr<AutomationControl> control = boost::dynamic_pointer_cast<AutomationControl>(processor->control(*i, false));
|
||||
if (!control) {
|
||||
continue;
|
||||
}
|
||||
/* see also AutomationTimeAxisView::state_id() */
|
||||
std::string ctrl_state_id = std::string("automation ") + control->id().to_s();
|
||||
bool visible;
|
||||
if (get_gui_property (ctrl_state_id, "visible", visible) && visible) {
|
||||
existing.insert (*i);
|
||||
}
|
||||
}
|
||||
|
||||
for (set<Evoral::Parameter>::iterator i = existing.begin(); i != existing.end(); ++i) {
|
||||
|
||||
Evoral::Parameter param (*i);
|
||||
|
Loading…
Reference in New Issue
Block a user