-
Notifications
You must be signed in to change notification settings - Fork 47
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix reporting of the slider in the Parameters dialog with Windows Narrator. #762
base: master
Are you sure you want to change the base?
Conversation
…rator. We can't annotate a real slider in the way we need for UIA. Since we don't really use the slider anyway, use a Static text control instead on Windows and annotate its role to fake a slider. Fixes #758.
Note that I can't use the existing static text control added recently because whenever the value changes, a name change event gets fired by the control and I can't override that, so Narrator was speaking the name of the control every time the value changed. |
Build succeeded! Build osara pr762-966,6c6536fd completed (commit 6c6536fd58 by @jcsteh) |
CC @pitermach. |
Thanks for looking into this. I tried out the new version, and can confirm that Narrator works great now. NVDA, ZDSR and Mac OS are also still working correctly. You were also right with your hunch re: JAWS, which with the latest version of the scripts now sees the slider just as a text element whose value is always 0 and this is what also gets reported when moving down the parameters list. Since the number of JAWS users is almost certainly way higher than narrator users I think the best thing to do is let Jim know about this and wait for a script update before merging this |
I've emailed the test build to Jim. |
JAWS ignores the accessibility info exposed for this control and fixing the JAWS scripts to deal with this is apparently going to be painful. So this is probably a no-go. This is why we can't have nice things. |
THat's unfortunate. The last thing I can think of is contacting Microsoft since the main issue is on their end, I'll link the issue and maybe it'll eventually be adressed |
It's debatable as to whether it's a Microsoft issue. On one hand, it's
annoying that I can't annotate the Value pattern. On the other hand, it's
unclear whether you're supposed to be able to annotate pattern availability
properties, since there are both pattern interfaces and pattern properties.
My guess is that UIA tries pattern interfaces before it tries pattern
availability properties and the UIA implementation for Win32 sliders
probably reports that the IValueProvider interface isn't supported, so it
never even looks at the annotated properties. I could probably get around
this by having a fully custom UIA implementation, but the work involved in
that exceeds the time I'm willing to put into this right now.
|
Have you considered changing the slieder to something else, e.g. a spinner? |
@@ -21,6 +21,7 @@ BEGIN | |||
LTEXT "Value:", IDC_STATIC, 10, 30, 23, 10 | |||
// SWELL doesn't have the TRACKBAR_CLASS constant. | |||
CONTROL "", ID_PARAM_VAL_SLIDER, "msctls_trackbar32", WS_TABSTOP, 40, 30, 60, 10 | |||
CONTROL "", ID_PARAM_VAL_FAKE_SLIDER, "Static", WS_TABSTOP, 40, 30, 60, 10 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Wonder what this will do with JAWS.
CONTROL "", ID_PARAM_VAL_FAKE_SLIDER, "Static", WS_TABSTOP, 40, 30, 60, 10 | |
CONTROL "", ID_PARAM_VAL_FAKE_SLIDER, "Button", WS_TABSTOP, 40, 30, 60, 10 |
We can't annotate a real slider in the way we need for UIA. Since we don't really use the slider anyway, use a Static text control instead on Windows and annotate its role to fake a slider.
Fixes #758.
I've tested this with NVDA and Narrator, but it will also need testing with JAWS. I know the JAWS scripts have special handling for this slider, so it's possible things will break without tweaks to the scripts.