The main change in wx accessibility is this:
7dab555f71 (diff-04f5191d86f95b1c4d5d9c979da65878)
However wxWindowAccessible has not been updated to take into account of that change. In particular wxWindowAccessible::GetParent() was always wrong, but it was consistent with the rest of the framework. Now it's wrong and inconsistent. This function should return an object with role window, and which has the same name.
The fix is to introduce class WindowAccessible, which is effectively our own version of wxWindowAccessible. This class does not override GetParent(), and so just relies on a standard accessible object to to the right thing in wxIAccessible::get_accParent() (which is does). This class also allows us to have our own version of GetName(), which allows us to set the accessibility names of buttons.
These changes will break the accessibility of Audacity if it is built with wxWidgets 3.0.X. If this is a problem, then there could be some #if stuff in WindowAccessible.h to turn the WindowAccessible class into one which simply inherits from wxWindowAccessible, and doesn't override anything.
... This commit leaves at least a comment for all choice controls of all
built-in effects and commands.
Use CamelCase with no spaces for the internal identifiers, given in
wxT("...")
Use more idiomatic English with spaces in the user-visible names, given in
XO("..."); these strings go to the message catalog for internationalization
Do not use underscores
In case these strings are the same, give it just once in XO("..."), but if in
a future version it is decided to change the name in XO("..."), then the
original should be kept also in a distinct wxT("...") string, so that
saved configuration or plugin settings or macro files don't become gratuitously
incompatible just because of that user-visible name change.
Left TruncateSilence alone for now -- I think that choice demands a rewrite
as a slider instead.
It is unused. This hides it if the ratio has been set.
Hiding it always in Macros means changing more code. It still will
show if it has only been picked and not set.
... preserving old behavior, but such escapes should not be used if the string
needs to localize because xgettext will not treat them as Nyquist.cpp does.
Limit percentage to -95 to +3000. Result will be at most 20x longer rather than previous
up to 100x longer. Extreme stretches have artifacts in any case (try with DTMF).
... The "Set" prompt for checkboxes;
Strings in Choice controls, which had been declared translatable with XO, but
the translations not yet used.
This can be tested in Ukrainian locale now, for editing parameters of
commands like Select or Drag, but be aware that even uk.po is not up to date
for all recent changes in the Manage Macros dialog itself.