Playlist::add_region copies regions as needed (see 8d045e15dc),
without forking the Source.
This fixes an issue when importing MIDI files. When
midi-copy-is-fork is enabled (enabled by default), the
RegionFactory::create call used during import forked the
region. This resulted in two Sources being created for each
imported MIDI file.
Make MainClock more self-contained and generic by moving logic from the
Config system and to the class itself, while making the class less aware
of how it is used in the config system.
It is slightly dirty to store the initial AudioClock widget name in
MainClock, but less dirty than having to pass the whole name correctly
every time the delta mode changes.
Also avoid confusing use of 'mode', which in AudioClock is used for the
units/formatting of the clock.
We would like to introduce an actual setter, but the most appropriate
name for it was used by something else: the high level callback invoked
when selecting the menu item.
* use UTF-8 music symbols for both
- note length
- dynamics (velocity)
This allows for both color theming as well as scaling. Previously
fixed size, black icons were used.
* directly rely on ActionManager actions for radio actions
This simplifies code and removes ambiguities.
* hide Bank/Patch buttons. Those actions are not implemented
libardourcp and now libardour_midisurface are not control
surfaces, but helper libraries for those.
They need to be deployed to the library folder (shared between
ctrl surfaces) and not scanned as ctrl surfaces at runtime.
Having current_time as a public alias of the private last_when did not
add any clarity to the abstraction of last_time. A small step, but still
room for improvement.
Ignored strings were scanned to a buffer that potentially could
overflow. There might be hidden invariants that make actual overflow
impossible, but that seems like a fragile defense.
Instead, just *really* ignore them.
macOS has its own z-axis stacking (see Manager::set_transient_for) for
dialog and utility windows of a single application. There only case to
set a dedicated transient parent is to keep the child window on top of a
dialog.
Valid use-cases are e.g.
Plugin Preset Name entry on top of a PluginWindow
Export Format Settings on top of the Export Dialog
Alternatively one would need to patch gtk to handle
[NSView shouldDelayWindowOrderingForEvent] and explicitly reorder
siblings of a common parent window.
This fixes an issue that plugin windows cannot be re-stacked but were
previously always stacked in the order they were opened.