mMidiPlaySpeed doesn't handle all of the options provided by time tracks,
and in fact doesn't even use time tracks. Using the time track
instead allows note tracks to remain synchronized with the rest of the audio.
mMidiPlaySpeed _did_ work where it was used in the transcription tool
bar, but that already updates a time track so no special handling is
needed.
Problem: If the accessibility name of a control is empty, Jaws may use nearly text for the name - in this case Audio position.
Fix: Set the accessibility name to "\a".
Problem: On Windows 10 1703, with the Jaws screen reader running, additional paint messages are sent to Audacity compared with when Jaws is not running. My assumption is this is probably a Jaws bug. In particular, when a project is closed, ToolDock::OnPaint, and AdornedRulerPanel::OnPaint are called.
Fix: changes ensure that these OnPaint functions can be called without causing a crash.
I've implemented three states for what to do if no selection:
0 - Grey out (no longer used)
1 - Auto-select
2 - Give the warning message and try again.
The layout of SelectionToolbar and SpectralSelction Tollbar now match, and they can be placed nicely side by side.
The borders around controls have been tweaked.
Extra vertical spacer lines have been added into the title row.
I've deliberately not given the choice a title, and deliberately put the word 'selection' at the end, so as to be better/faster for Screen Reader users.
The look of Selection Toolbar and Spectral Selection Toolbar is now consistent. In dark themes both could have better looking choice boxes.
Tooltips tell users what the abbreviated names in the radio button group mean. The hyphen helps a little in relating the title , which has a hyphen in it, to the two fields.
Fortunately a vertical line works just as well as a checkbox in working around the bug where radio buttons change to the first field. It is better for screen readers too as it is not included in the tab order.
The checkbox on the selection toolbar is a temporary work around for a bug in windows with tabbing. Tabbing into a radio button will set the first item of the radio button group without it. Still looking for a better workaround.
This is a convenience for sighted users. If they are showing start, center, length, end, they can click on the title 'Center' to preserve it, and then modify length. Similarly for the other controls. This makes working with more than two controls much more intuitive.
The toolbar can now show subsets of the start, center, length and end numeric controls. The choice is made using a button with a pop-up menu. The two most recently modified controls 'drive' the other two, whether they are visible or not. If shown, the driven controls are indicated in the name above (also for screen readers).
Most users will opt to just show two of the controls, e.g. start and end.
The menu button (Classic theme) has three dots on it. Other themes don't yet have the icon and will show as black.
For Light and Classic themes that use black text, we'll use the length/end buttons because Windows uses black for text.
For Dark and HiContrast themes that use a light colour for text, we'll use the length/end buttons IF the OS is set to use the exact same colour for text.
That for example happens if we use Microsoft's HiContrast2 and our HiContrast theme.
If the OS and theme text colour differ, then if we set blend theme colours option, which is the default, we might still use the OS colour for text in Audacity. That will happen if the OS colour has decent contrast to our theme's background colour. Decent is defined as more than 250 difference in RGB values. If we use the OS colour for text, then we get the proper length/end buttons.
Note that this adds a new feature to the theme blending, in that the text colour will often adapt. Useful when using custom text colours with HiContrast2. When the text colour adapts, we will continue to get proper length/end buttons.
Advice to users is to match OS and Audacity themes, and use the blend option. When themes don't match, it may be desirable to disable blending.