-
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
Parameters dialog: Narrator always reads value slider as 0% #758
Comments
We annotate PROPID_AC_VALUE, but this doesn't seem to carry over to UI Automation. I don't know why. Perhaps implementing the UI Automation Value pattern might fix this. Fully implementing the pattern would be tedious, so perhaps we can annotate UIA_ValueValuePropertyId and UIA_IsValuePatternAvailablePropertyId.
A little out of scope here, but do you mean as compared to NVDA and are you talking about performance? If so, have you tried enabling NVDA's Selective UIA registration advanced setting? |
Yeah, I was mainly comparing against NVDA and JAWS to a lesser extent. Performance is actually OK most of the time. The 2 advantages Narrator has is that its find command works everywhere, not just on the web which really helps in very complex UI's which don't have many keyboard shortcuts, and it lets you adjust sliders programatically while NVDA only can move them in only one direction (Relevant NVDA issue here). From testing various Juce plugins it looks like the standard Juce slider widget doesn't seem to have any keyboard support built in for arrow keys to adjust sliders so this problem comes up surprisingly often. |
Dynamic annotation doesn't work for this control unfortunately. UIA Core just seems to ignore UIA_IsValuePatternAvailablePropertyId when it is annotated. That means it'll need to be a full IRawElementProviderSimple implementation... and I'm not even certain that will work. We might need IValueProvider as well. Since we don't actually use the slider, I also experimented with just making it static text and annotating its name, role and value. That works... but then I realised that will prevent the slider from being reported as a slider on Mac, where we can't just annotate roles. |
I can't fool it with OBJID_QUERYCLASSNAMEIDX either. This is utterly irritating. |
Okay. I've come up with a really horrible hack that avoids the need for a fully custom UIA implementation. I'll clean it up when I get a chance and post a PR. It does change the visual layout a bit, but the visual layout for that slider is useless anyway, so I don't particularly care. |
…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.
The title pretty much explains everything. To reproduce, with Narrator running bring up the parameters dialog for a track or effect, then adjust the value using the slider. Narrator will keep reading the value as 0 (tested with osara_2022.1pre-961,04fb6f9c)
The reason I'm bringing this up is that Narrator seems to work much better in UI's built with the new Juce especially really large ones, so I found myself using it much more often when doing audio work on Windows.
The text was updated successfully, but these errors were encountered: