Skip to content
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

Open
pitermach opened this issue May 16, 2022 · 5 comments · May be fixed by #762
Open

Parameters dialog: Narrator always reads value slider as 0% #758

pitermach opened this issue May 16, 2022 · 5 comments · May be fixed by #762
Labels

Comments

@pitermach
Copy link

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.

@jcsteh
Copy link
Owner

jcsteh commented May 16, 2022

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.

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

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?

@pitermach
Copy link
Author

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.

@jcsteh
Copy link
Owner

jcsteh commented May 21, 2022

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.

@jcsteh
Copy link
Owner

jcsteh commented May 21, 2022

I can't fool it with OBJID_QUERYCLASSNAMEIDX either. This is utterly irritating.

@jcsteh
Copy link
Owner

jcsteh commented May 21, 2022

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.

jcsteh added a commit that referenced this issue May 21, 2022
…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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants