Very low risk workaround implemented - close and dispose of the splash screen before creating project.
It is pretty clear it is the interaction between two dialogs during AppInit that is the root cause of the problem.
A high risk solution would involve delving into and fixing wx3 internals.
Splash screen will now disappear fractionally sooner than before - the time it takes to create an empty project.
Space required in path name. Also force old names that were set to temp directory to update to ones that aren't on Mac too.
Something to test on Mac -> What happens if suggested directory does not exist?
Untested on Mac (I don't have one). Might perhaps even fail to compile. But 1220 is a P1. Important enough for our schedule that we clear it now that I am happy enough to risk a 'blind patch'.
This fix is good for Mac only, but maybe the same could apply to Linux.
See also commit a00f866b5425572dbb8032d93ad2627fa07e1d08
That commit fixed, e.g., alt+f6 cycling between the main window and the splash
dialog when starting Audacity. However, alt+tab to switch applications, then
again to return to Audacity, still trapped you.
This further change eliminates the other trap.
Perhaps the conditional compilation #ifdef __WXMAC__ in these two commits
could be broadened to cover Linux and the bug will be fixed there too.
... So it does not depend on the focused window, and can work when selection
toolbar has focus. But TrackPanel's escape handling may still take precedence
over it.
... Should have no effect on generated code, except perhaps some slight faster
virtual function calls. Mostly useful as documentation of design intent.
Tried to mark every one of our classes that inherits from another, or is a
base for others, or has abstract virtual functions, and a few others besides.
Update the manifest pragma to match the docs.
Using * for processorArchitecture should work on both 32 and 64 bit systems, with Audacity compiled for 32 bit.
The residual issue here was that an old cfg could go on using the unsafe path. So we check for the unsafe path at init and silently substitute the good path. If the user attempts to re-instate the unsafe path we tell them no, with an informative message. This change was made more complex by windows allowing different strings for the same path, specifically C:\Users\JAMESC~1\AppData\Local\Temp\audacity_temp contains the shortening '~' so in the function that tests 'IsTempDirectoryNameOK' we use GetLongPath() to always compare the expanded names.
I also changed directory prefs to add SessionData rather than audacity_temp on the new directory name, on windows when choosing a new temp directory.