... following the substitute, don't concatenate rule in many places.
The end users have commands to generate these reports in menus, so they should
be translated then; however, they are also part of crash reports meant for
developers, so temporarily set English locale for generating those.
Problem:
Using the Narrator screen reader on Windows 10, there are a couple of issues:
1. After making a change to solo/mute/selectedness, the name and state of the track is not automatically read.
2. Text sent to TrackPanelAx::MessageForScreenReader() is not read.
Fixes:
After a focus event, if the focus has not changed, Narrator does not read the name, even if the name has changed. So:
1. In TrackPanelAx::Updated(), add a name change event. (The focus event has been retained to keep Window-Eyes happy until we stop supporting it.)
2. In TrackPanelAx::MessageForScreenReader(), change the focus event to a name change event. Note the Window-Eyes does not read these messages anyway, because when the role is set to wxROLE_NONE it does not read the name. So there's no point in including a focus event for the benefit of Window-Eyes.
Problem:
Using the Narrator screen reader on Windows 10:
1. Narrator does not read the uneditable cells in the tag column of the Metadata editor.
2. In one or more versions of Windows 10 prior to 1809, Narrator's focus was incorrect after editing a cell.
Fixes:
1. Fixed by adding wxACC_STATE_SYSTEM_FOCUSED to the state.
2. Corrected GridAx::GetFocus().
... as was the intention in the wxWidgets code from which these files were
adapted
More importantly this removes the mischievous #define (added at 08c94d5) from
valnum.h, which made it impossible to #include that header before
<wx/combobox.h>.
Note that (the real type) wxTextEntry is not a kind of wxWindow, but a class
from which wxTextCtrl and wxComboBox both inherit, while they inherit wxWindow
too along other paths.
So in some places, use the protected variable m_ValidatorWindow instead to
access the validator's window.
... except Experimental.h, but see preceding commit.
This is especially important in the header files.
Be sure there are no quiet changes of meaning when a header file is included
in a different context, not having seen Audacity.h. Rather include Audacity.h
even if redundantly.
Also, in some header files, move more inside the include-guard #ifdef-#endif
pair.
... so that USE_* macros will be seen first, and so
EXPERIMENTAL_AUTOMATED_INPUT_LEVEL_ADJUSTMENT, for one, is correctly defined.
I hesitated actually to include Audacity.h in Experimental.h. Maybe no
need for that hesitancy. But instead I use #error if Audacity.h has not been
seen yet.