mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-16 03:36:32 +01:00
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
2 changed files with 27 additions and 1 deletions
|
|
@ -83,6 +83,18 @@ public:
|
||||||
return false;
|
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 set_gui_property (const std::string& property_name, const std::string& value);
|
||||||
void remove_gui_property (const std::string& property_name);
|
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;
|
set<Evoral::Parameter> existing;
|
||||||
|
|
||||||
processor->what_has_data (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) {
|
for (set<Evoral::Parameter>::iterator i = existing.begin(); i != existing.end(); ++i) {
|
||||||
|
|
||||||
Evoral::Parameter param (*i);
|
Evoral::Parameter param (*i);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue