This is mostly a simple lexical search+replace but the absence of operator< for
std::weak_ptr<T> leads to some complications, particularly with Evoral::Sequence
and ExportPortChannel.
* undo is not (currently) a Global action, it's an Editor action
* ... but we want the ability to undo a recording
One option would be to chagne Undo to a Global action, which would have a
sizable impact on code and existing shortcuts.
Instead I'm choosing to implement a Rec-page-specific Undo action & shortcut
It's conceivable that someday we would want the Recorder page to ONLY undo
record operations, and the Mixer page to ONLY undo mixer operations, or
something like that. This lays the foundation for that.
This is an initial work-around for signal emission with
Playlist:region_lock held:
Playlist::duplicate() takes RegionWriteLock() and then calls
RegionFactory::create(). The newly created region does NOT have
property-changes suspended, and the RegionFactory can change
region-properties which results in signal-emission.
This in turn can lead to a call Editor::session_gui_extents()
-> ARDOUR::Playlist::get_extent() -> Playlist::RegionReadLock
which deadlocks: https://pastebin.com/84rSbsA3
Eventually we need a mechanism to create regions with
->suspend_property_changes() and add it to the playlist's
thawlist (pass a thawlist to the region-factory).
This GTK button style is out of place in both contexts.
Furthermore it is inconsistent to not have the same button
in the editor (there is a dropzone).