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

Windows 10: recognize several common dialog classes from XAML and other controls #8405

Closed
josephsl opened this issue Jun 16, 2018 · 2 comments · Fixed by #8473
Closed

Windows 10: recognize several common dialog classes from XAML and other controls #8405

josephsl opened this issue Jun 16, 2018 · 2 comments · Fixed by #8473

Comments

@josephsl
Copy link
Collaborator

Hi,

Related to #8339:

There are dialogs powered by XAML that are not recognized by NVDA as proper dialogs. These include app removal dialog in Settings/Apps/App and Features, reset dialog in Settings/Update and Security/Recovery/Reset, and potentially others. For now, NVDA does not read them natively, and in order to announce them, one needs to install Windows 10 App Essentials add-on.

Technical: in the old days, automation ID's weren't useful, but that's slowly changing. Thankfully these controls have unique UIA class names, including Shell_SystemDialog, Popup and others. Checking for class names could serve as one of several tests to detect dialogs.

Thanks.

@josephsl
Copy link
Collaborator Author

Hi,

This and #8339 will be combined into a single PR. Thanks.

@josephsl
Copy link
Collaborator Author

Hi,

Actually, they will be a separate PR just for this issue so it can go live as part of 2018.3 at the earliest. Thanks.

josephsl added a commit to josephsl/nvda that referenced this issue Jun 30, 2018
…ws 7, 8.x, 10, as well as apps. Re nvaccess#8405.

Windows 10 and various apps added more dilaog class names. Rather than using a static list as part of overlay class chooser in UIA object, this list, along iwth new ones, are now available in UIA handler.
Also, added constant for UIA_IsDialogPropertyID in UIA handler, to be removed once IUIAutomation6 interface support comes to NVDA, as this property ID will be included in Redstone 5.
josephsl added a commit to josephsl/nvda that referenced this issue Jun 30, 2018
…roperty in Windows 10 RS5. Re nvaccess#8405.

Instead of looking up only three class names, look up more via:
* Additional class names found in Windows 10 and various apps.
* In RS5, IsDialog property.
This allows dialogs such as app uninstlal dialog and many others to be recognized and their contents read by NVDA.
josephsl added a commit to josephsl/nvda that referenced this issue Jul 3, 2018
Reviewed by @LeonarddeR (Babbage): simplify dialog flag via assigning this flag from exception hyandler segment rahter than setting it to False when COM error is thrown. This then allows IsDialog flag to be set whether or not exceptoin has occured.
michaelDCurran pushed a commit that referenced this issue Jul 19, 2018
…s via more class names and IsDialog property in Windows 10 Redstone 5 (#8473)

* UIA handler: add class names for various dialogs encountered on Windows 7, 8.x, 10, as well as apps. Re #8405.

Windows 10 and various apps added more dilaog class names. Rather than using a static list as part of overlay class chooser in UIA object, this list, along iwth new ones, are now available in UIA handler.
Also, added constant for UIA_IsDialogPropertyID in UIA handler, to be removed once IUIAutomation6 interface support comes to NVDA, as this property ID will be included in Redstone 5.

* NVDAObjects/UIA: detect more dilaogs using class names and IsDialog property in Windows 10 RS5. Re #8405.

Instead of looking up only three class names, look up more via:
* Additional class names found in Windows 10 and various apps.
* In RS5, IsDialog property.
This allows dialogs such as app uninstlal dialog and many others to be recognized and their contents read by NVDA.

* UIA/IsDialog: address review actions. Re #8405.

Reviewed by @LeonarddeR (Babbage): simplify dialog flag via assigning this flag from exception hyandler segment rahter than setting it to False when COM error is thrown. This then allows IsDialog flag to be set whether or not exceptoin has occured.

* Upgrade to IUIAutomation6/IUIAutomationElement9 interface (based on build 17692).

* Use IsDialog property directly from IUIAutomationElement9 interface. re #8405.

* UIA: Popup is not supported as a fallback dialog class as the className is too generic. All the other classes are clearly dialogs from the name.

* Update What's new
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
1 participant