... Warnings have been treated as errors in Xcode project settings since 2.3.1,
and there ware warnings about using override on only some but not all overridden
virtual functions in the PrefsPanel subclasses.
Following a lengthen discussion on the quality list, consensus is this option
should always have been off by default. The main argument for not changing
it now was that 'on' is what users have come to expect.
... That is: EffectsPrefs.cpp is consistent with overrides of
EffectDefinitionInterface::GetFamily for each of the six (separately).
(The six aren't consistent with each other. LADSPA really is an acronym, but
Vamp is not.)
See VAMPEFFECTS_FAMILY, which isn't up-cased, and LADSPAEFFECTS_FAMILY,
which is. We change EffectsPrefs.cpp to match those constants.
See also where PluginManager.cpp uses
PluginDescriptor::GetEffectFamily, which is where the preferences written by
EffectsPrefs.cpp are used.
Does this break compatibility of old config files? No, because lookup of
keys in wxConfigFile is case-insensitive, as determined by the preprocessor
constant wxCONFIG_CASE_SENSITIVE, which is false for all of our platforms.
So, no real effects here, but the consistency of string literals is reassuring.
It would be better, though, not to rely on such a coincidence of literals.
Problem:
In Mouse preferences, the list of bindings has a dummy empty column, which is a workaround for getting the Tool column to be right aligned. As a result, Narrator reads the list as having 5 columns which is confusing. In addtion, when arrowing down such a list, Narrator initially just reads the contents of the first column, which is unfortunately an empty string.
Fix:
After all the columns have been inserted, the dummy column can be deleted. This workaround was suggested by some Microsoft documentation.
Problem: a user can tab to the list, and no list item is the focus, and there is no visual indication of focus.
Fix: set the first item to be selected and focused
Commit 75e44df made controls in a wxStaticBox children rather than siblings. Three of the controls in KeyConfigPrefs are not handled by ShuttleGui, so needed manual changes of parent.
In addition, on Windows tabbing out of the text box for setting the shortcut resulted in the wrong control getting the focus. Changing to using Navigate() rather than NavigateIn() fixed this, though I don't know why. This needs testing on other platforms.
... except Audacity.h
This forces us to make each header contain all forward declarations or nested
headers that it requires, rather than depend on context.
... except Audacity.h; and in no others.
Do so even if Experimental.h gets multiply included, as in both the .h and
.cpp files.
This makes it easier to do a text scan to be sure there are no unintended quiet
changes of meaning because of omission of Experimental.h when the flag is
an enabled one.
Also move inclusions of Experimental.h earlier.
Also don't require Experimental.h to be preceded by Audacity.h to define
EXPERIMENTAL_MIDI_OUT correctly.