This is now the behavior of Zoom Reset, with Max Zoom being given the previous behavior. Shift+Right-Click alternates between the two -- it zooms to all notes, unless it currently is zoomed to all notes in which case it performs a max zoom.
This fixes Bug 2093. It also fixes Bug 1815, by performing the all-notes zoom when importing a track.
This doesn't need to trigger an autosave (which is what passing true would do), but the state should still be modified.
Unfortunately this doesn't seem to enable saving -- probably because no undo state is being pushed. That's something to consider for the future.
This simplifies a bunch of other work -- in particular zooming so that specific notes are visible, and keeping the same notes on screen when resizing the track.
Also included is a fix to YToIPitch to make it use mPitchHeight directly -- this solves some roundoff errors, which previously caused inaccurate results on some zoom levels.
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.
... Two controls were associated with the same path,
"/FileFormats/FFmpegMaxPredOrder"
But where the paths are read in ExportFFmpeg.cpp, that was read in one place,
and in another, "/FileFormats/FFmpegMaxPartOrder" was read, and that path was
not written anywhere.
The intention was surely that the other spin control should have used that path.
... but see code comments about the apparent original intent, to update some
other preference instead; which I don't do, thus preserving present behavior