The singleton ActionModel provides a Gtk::Treestore of all actions known to
ardour.
To be used for example by surface control editors to implement action bindings.
Since we (since ddfc37e4) set the UserDown flag for the User button actions, we
need to set it also when we lookup actions when saving the state.
Furthermore, we need also look for the UserDown flag, when we set the state
of the configuration combos for the User button.
The GUI should be notified about the tearing down of the control
surfaces *before* the protocols are actually destroyed.
On ProtocolStatusChange ControlSurfacesOptions::selection_changed() might try
to access protocol->has_editor() of a protocol that happens to be selected in
the preferences GUI. I this protocol already has been destroyed, a crash will
occur.
This improves consistency for the various new-route descriptions
and allows to unify messages with Mixbus without re-doing complete
strings. It may also benefit translations.
This reverts/reworks commit e87012ca89 -- a failed experiment
which isn't used by Mixbus either since it introduced various issues.
When reverting to backups > 1 hour old, closing the session first
is acceptable.
This forward ports Mixbus' 4eca3dea47 without additional code to correct
for old (Ardour2) URIs.
A2, used path2uri() which accumulated and left duplicate slashes in place,
eg. "file:////". Mixbus3 auto-corrected this on load in
AudioLibrary::search_members_and().
However sfdb libraries are not shared between major versions, so this
code does no need to be forward ported.
This fixes an crashing issue with ArdourUI.SelectionList a bug
introduced in 6dc3bdf252 and 35dcd46d7d.
Since removal of the special cases in 35dcd46d7d, when using
a C-pointer in a std::list<>,
std::list<class*>::push_back(TypeListValue)
TypeListValues<>'s Head was expanded to "class*& const"
implied by void ::push_back(const T& value);
This resulted in lifetime issues with a classes that derive
from sigc::trackable (e.g. Ardour's Selection).
The reference leaves scope and isn't duplicated when it is pushed back
to the std::list<>.
The script scripts/select_every_2nd_region.lua crashed because entries
in the SelectionList were no longer valid.
Previously (before 6dc3bdf252) TypeListValues explicitly
copy-constructed the value to work around the lifetime issue.
This new solution bypasses the issue by directly using the c-pointer
without dereferencing it.
This is to be used sparingly because the pattern is dynamically
created every time. Mainly for the benefit of some Mixbus
widgets -- compared to ArdourButton::convex_pattern