This works around an issue where gtk sends two callbacks when a radio
selection changes. First: unselect, then select new item.
Previously:
Two tracks, two groups. Select all tracks, assign to 2nd group. Crash.
The first callback, "unselect" iterates over all tracks, removes them
from any groups. Eventually all groups are unused and hence destroyed.
The 2nd callback - "select" - now uses a just destroyed group.
For most plugin-standards it is useless. Variable I/O is not filtered,
and many plugins also come in mono-compatible stereo-variant.
The MIDI filter never worked reliably either.
This is incomplete, pending backporting of Mixbus mixer_ui.h changes,
but this way it won't be forgotten.
And it might be handy to also include the shadow in Ardour's theme?!
When a non-existent file-path is given, GTK falls back to show the
containing folder and automatically goes up to parent folders until
the root.
This removes the explicit file/folder check and delegates the
behavior to GTK, allowing to set a folder for a non-existent file.
This fixes an issue with the session being marked as dirty without
any actual change. Also this method indirectly called during session-load
when the UI state is restored, a potential race with "Session::Loading"
being unset.
We no longer assume that Snap always uses the visible ruler lines.
If you want to snap to the grid, and ignore the users zoom scale, use SnapPref::SnapToGrid_Unscaled
This fixes 2 (known) oversights: "snap region(s) to grid" and "regions whose start are left of the canvas edge".
Some MIDNAM files use Patch-Banks that do *not* have a common midi bank
(CC0, CC32) but the Patchbank is instead just a collection of patches.
There may be more than 127 patches in a patch-bank and each of those
may be in a different midi-bank (e.g. Roland SC-88 Pro).
Midnams like these are now properly supported via dropdowns (in the
patch add/modify dialog and timeline), but ignored by the grid
(patch-widget). More work is needed.