Problem: this affects NVDA and Narrator, but not Jaws. If a user moves to the Delete button and presses it to delete a label, a label is incorrectly read as the new focus - the focus remains on the Delete button.
GridAx::SetCurrentCell() can be called when the Grid is not the focus, and send a focus event.
Fix: In GridAx::SetCurrentCell() only send an focus event if the Grid is the focus.
Problem: If the initial focus is a control in a toolbar, then after applying an effect such as amplify, then the focus is read as being a track, not the control in the toolbar.
TrackPanelAx::SetFocus() can be called when the TrackPanel is not the focus, and send a focus event.
Fix: In TrackPanelAx::SetFocus(), only send a focus event if the TrackPanel is the focus.
Problem. If an item in the list is selected, then if a different view by radio button is selected, Narrator reads the selected item rather than the radio button.
KeyViewAx::SetCurrentLine(int line) can be called when the KeyView is not the focus, and send a focus event.
Fix: In KeyViewAx::SetCurrentLine(int line), only send focus event if the KeyView is the focus.
... Unnecessary because transitively included.
But each .cpp file still includes its own .h file near the top to ensure
that it compiles indenendently, even if it is reincluded transitively later.
... Identifier holds strings used for internal purposes and not shown to users;
TaggedIdentifier generates subclasses of Identifier for different purposes,
which won't implicitly (that is, inadvertently) interconvert as function
arguments.
... To use it, first install graphViz. Then change to the scripts directory
and run ./graph.pl . Then view the resulting image file in a browser.
See an acyclic graph, each node labeled with the list of .cpp files in
one strongly connected component of the linkage dependencies as determined
by scanning the #include directives in the sources.
It worked for me in macOS.
... the error checking might not be complete, but it is sufficient for the
observed cases, where switching between 32 and 64 bit Mac builds causes
auto-recovery in one build to destroy the data saved by the other build.
Now instead, you will see an error message, recommending that you run the
same version of Audacity that produced the file.
Note that decoding of autosave files can also (less commonly) happen with
a command-line argument, and a message is written to standard out. Give the
same message in that case.
Localization of this changed message unfortunately can't happen this late in
2.3.2 development.
... I think this is a defect in wxWidgets, but one we can work around with a
simple wrapper class around wxSlider overriding one method.
To make the fix complete, change all occurrences of "safenew wxSlider"
but the one in ShuttleGui.cpp covers most cases