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

Add support for Windows 11 Calculator #13212

Closed
josephsl opened this issue Jan 3, 2022 · 0 comments · Fixed by #13215
Closed

Add support for Windows 11 Calculator #13212

josephsl opened this issue Jan 3, 2022 · 0 comments · Fixed by #13215
Milestone

Comments

@josephsl
Copy link
Collaborator

josephsl commented Jan 3, 2022

Hi,

A subtle follow-up to #9428:

Background:

One of the side-effects of Windows as a Service, or for that matter, universal apps, is the changing nature of apps. One of the changes is renamed executables, the best known case being Windows 10/11 Mail (hxmail -> hxoutlook). Another change is UIA tree for apps where the old tree traversal route will not work due to rearranged UIA tree for apps, the best example being emoji panel.

Is your feature request related to a problem? Please describe.

In #9428, NVDA introduced support for Windows 10 Calculator (calculator.exe), mostly to suppress UIA notification event announcement when entering expressions while speak typed characters is turned off. Windows 11 twists this in two ways:

  • Calculator app executable was renamed to calculatorapp.exe
  • UIA tree is different, so tree traversal to detect UIA notification announcement condition must be tweaked.

Describe the solution you'd like

Add support for Windows 11 Calculator through a new app module. There are two implementation strategies:

  1. Create a brand new Windows 11 Calculator app module that inherits from existing Windows 10 (modern) Calculator app module but tweaks UIA notification event handler's results tree traversal (in Windows 11 Calculator, one must move down one more level when fetching results element).
  2. Tweak existing Windows 10 Calculator app module's UIA notification event handler to account for UIA tree differences, then add an alias app module for Windows 11 Calculator.

Both approaches are being tested via Windows App Essentials add-on (currently the first approach is available for users, with the second approach being tested in private and a proof of concept will be deployed to dev channel users within the next 24 hours). The upcoming pull request will "transplant" code from Windows App Essentials add-on to NVDA Core (people reading add-on source code should notice what that PR would look like).

Describe alternatives you've considered

Leave it to add-ons to support Windows 11 Calculator.

Additional context

App modules for modern Windows apps are subject to change based on latest happenings with apps themselves, especially since apps can be updated anytime (this is the main reason why I wait for a while before proposing an app module for a modern Windows app to be included in NVDA Core). Also, Calculator app is now open-source, so anyone can contribute to it (repo is hosted on GitHub), with newer releases focusing on Windows 11.

Thanks.

josephsl added a commit to josephsl/nvda that referenced this issue Jan 4, 2022
…ication event in Windows 11 version. Re nvaccess#13212.

In Windows 11 Calculator, due to UI redesign, app interface lives inside the last child of the foreground window (foregroundObject.children[1].lastChild.firstChild), therefore check product version and descend one more level if this is Windows 11 version. This is only one of several changes introduced in Windows 11 Calculator.
josephsl added a commit to josephsl/nvda that referenced this issue Jan 4, 2022
…alias for Windows 10 Calculator. Re nvaccess#13212.

The biggest change between Windows 10 and 11 Calculator app is renamed executabel - calculator.exe -> calculatorapp.exe. Following precedence from other Windows apps, add Windows 11 Calculator as an alias for Windows 10 version, with the latter also adding version checks for Windows 11 version (similar in arrangemenet to emoji panel support in Windows 10/11).
feerrenrut pushed a commit that referenced this issue Feb 16, 2022
Closes #13212

Summary:
In Windows 11, Calculator has had UI changes, and has a renamed executable (calculator.exe -> calculatorapp.exe).

Description of change:
Adds support for Windows 11 Calculator (calculatorapp.exe), consisting of an alias app module and responding to UI changes via Windows 10 Calculator app module.

Windows 11 Calculator app module:
 - Added as an alias for Windows 10 Calculator to follow precedence set by other apps such as emoji panel, Windows Search, and Mail.

Windows 10 Calculator app module:
- Base app module for Windows Calculator
- Provides detection of Windows 11 UI (if Windows 11 version is in use, UIA notification event handler's results detection code must descend one more level to locate display element).
@nvaccessAuto nvaccessAuto added this to the 2022.1 milestone Feb 16, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants