CCs use 0-based counting, however CC 0 and 32 (bank select) are skipped
in Ardour's CC menu. This lead to some misleading enumeration.
Now, group CCs by 32, skip sub-menu if there are fewer than 32 named
items, and otherwise actual CC min/max numbers per named list.
Changing the playlist (remove_region) invalidates selection and
unsets `clicked_regionview`. The region to operate on needs
to be stored for later use.
Postpone menu rebuild when plugin status changes while the PluginManager
Dialog is visible.
Since the dialog is modal, the menus cannot be used while the dialog
is visible, so updating them once when the dialog is hidden is sufficient.
Previously there were three plugin-manager instances (two of which
were never destroyed).
There were also 3 sets of context-menus (favorites, by tag, by author..),
all of which were re-built when plugin stati changed.
Since the Plugin-manager is a modal dialog, it can be re-used in
all contexts (route-ui, monitor-section, mixer).
This fixes an issue when embedding external files with ISO or some non
ASCII encodings (KDE/dolphin file-manager does not UTF-8 encode
filenames for plain/text DnD). But does so for URIs.
See also #7253 and previous commit
Instead of uniformly demote configurations with a non-matching audio
input count (using a penalty offset of 1000), also grade the
impreciseness of the configuration so that those with the nearest input
count are preferred. As for outputs, give a slightly higher handicap to
configuration with too many inputs with regard to the actual audio
inputs that can be fed to the plugin.
POLICY CHANGE: when only imprecise configurations are found the actually
selected one can be different (better) than before this commit.
Just make the code responsible for possible_in > 0 also handle
possible_in == 0 since it nearly does the same thing.
The only difference is that the possible_in == 0 case, by using
FOUNDCFG(), acted as if possible_in was audio_in. The consolidated code
uses FOUNDCFG_IMPRECISE which will add some penalty to the
configurations where desired_in == possible_in != audio_in.
There is thus a small POLICY CHANGE, but the selected configuration will
stay the same unless a better matching configuration is available.
Still no policy change, since when a configuration is chosen that would
have belonged to the second pass, then its penalty will be increased by
1000 and it will be selected only as last recourse.
Merge the cases in == -1 and in == -2 since those are both wildcards,
almost symmetric in the AU spec, and handled completely symmetrically by
the code here considering it accepts invalid or unspecified demands.
Also merge the cases in > 0 and in < -2 since they are handled exactly
the same as far as outputs are concerned.
No policy change