Skip to content

Merge master to beta, branch for 2022.2#13787

Merged
seanbudd merged 10 commits into
betafrom
master
Jun 10, 2022
Merged

Merge master to beta, branch for 2022.2#13787
seanbudd merged 10 commits into
betafrom
master

Conversation

@seanbudd

Copy link
Copy Markdown
Member

Branching at commit 4eb30c9

Note must be a merge commit not squash merge

josephsl and others added 10 commits May 23, 2022 15:18
…IA element (#13723)

Fixes a possible regression from #13691
Follow-up to #13506
Fixes #13717

Summary of the issue:
On some Windows 11 systems, Start button is seen as IAccessible object rather than UIA element. This causes IAccessible handler to report attribute error when handling events as an attribute is not present in UIA elements.

Description of how this pull request fixes the issue:
On the surface, Start button window class name (Start) should be classified as a bad UIA window. However, when handling events from UIA handler thread, good UIA windows are checked before looking for bad UIA window class names. Because File Explorer's good UIA window method checks for the root element (the element being the ancestor of Start button), bad UIA window class name will not et a chance to detect IAccessible Start button. Therefore edit good UIA window method instead by checking for the specific class name in Windows 11.

Testing strategy:
Manual testing:

Prerequisites: Windows 11 Version 21H2 or later (test systems are running Version 22H2 preview (build 22621 beta):

Run a build from this branch.
Press Windows+D to show Desktop.
Press Tab to move through shell elements such as Start button, Task View button, Taskbar, notification area, and back to Desktop.
While performing step 3, make sure NVDA is saying something.
For detailed debug output, enable IAccessible and UIA debugging from Advanced settings panel, restart NVDA with debug logging enabled, then perform steps 2 through 4 from aboveabove. Then open the log and see what IAccessible and UIA handlers are saying about focus events.

* appModules/explorer: do not treat IAccessible Start button class as UIA window. Re #13717.

Reported by a user: on some systems, Windows 11 Start button is seen as IAccessible (MSAA), not UIA, causing IAccessible handler to report AttributeError since event ID could not be found in UIA objects. Therefore in File Explorer app module, do not treat IAccessible Start button (window class name: Start) as UIA element.

* appModules/explorer: combine Start button IAccessible object class check with other class name checks. Re #13717.

Tip from Sean Budd (NV Access): move Start button class name check to the parent boolean - that is, package Windows 11 + shel elements + excluding IAccessible Start button under 'logical and' check.
Summary of the issue:
When activating Highlight of navigator object, the highlighting rectangle does not show up. It only shows up when the navigator object is moved for the first time. If the highlight of nav object is previously disabled, the issue occurs for all the four following types of activation:

When checking the corresponding checkbox in the vision parameters
When you reload NVDA's saved config provided that highlighter is enabled in NVDA's saved config.
When activating with a gesture a profile containing nav object highlight enabled
When NVDA starts up if the default config has nav object highlight enabled
Description of how this pull request fixes the issue:
Checks nav object initialization when the providers are initialized. Prior to this PR, only the focus initialization was checked (and the caret thanks to it).
…, allow panning after review commands (#13718)

Fixes #8682
Fixes #11519

Summary of the issue:
#8682: when using the read_currentLine, read_currentWord, and read_currentCharacter commands after the caret has been moved, it is impossible to pan the Braille display through the displayed content.
#11519: when moving the mouse with Mouse Tracking on (default) and Braille Tether set to Auto (default), using read_currentLine, read_currentWord, and read_currentCharacter speaks content under the mouse, but does not update the Braille display with the spoken content.

Description of how this pull request fixes the issue:
These three global review functions all call braille.handler.setTether early in their processing. braille.handler.setTether clears the display buffer, making it impossible to scroll through the displayed content. braille.handler.setTether also does not update the display, causing the problems discussed in #11519 -- tether flags are set properly, but the display does not change. A simple call to braille.handler.handleReviewMove in all three cases solves both of these issues.
… position information (#13744)

Fixes #9184 and fixes #9728 

Summary of the issue:
A number of features in Java Access Bridge were not working optimally.
1. Various commands like read window and read window title were not working when Java applications have multiple windows. (#9184)
2. Toggle buttons were not read correctly. (#9728)
3. Unnecessary spaces when HTML tags removed from Java controls. (#9728)
4. Provide position information for Java tab controls. (#9728)

Description of how this pull request fixes the issue:
1. According to Java documentation* when getAccessibleIndexInParent returns -1 there is no parent. So in NVDA if indexInParent is None we should treat it as if parent is not set.
2. Java toggle buttons use the checked state for pressed, correctly map this. The value should be ignored for a toggle button.
3. Updated the regular expression processing for HTML tags to check if the tags are at the start or end or have surrounding whitespace, in which case the tag is stripped. If there is only non-whitespace characters around the tag then replace the tag with a space to prevent words being joined.
4. For Java controls with Role.TAB use indexInParent and parent.childCount to find the position information.

* https://docs.oracle.com/en/java/javase/17/docs/api/java.desktop/javax/accessibility/AccessibleContext.html#getAccessibleIndexInParent()
…tire code base. (#13646)

Summary of the issue:
Process ID of NVDA is retrieved and used inconsistently in the code base:

In appModuleHandler we're storing it as a module level variable when initializing, however it is also pointlessly reinitialized when user re-initializes appModules - this makes no sense as process ID is constant during NVDA's life time.
Most modules retrieve it by calling os.getpid
In some cases win32 function GetCurrentProcessId is used directly.


Description of how this pull request fixes the issue:
NVDA process ID is stored in globalVars when NVDA starts - all usages of os.getpid and GetCurrentProcessId now use the new variable. Since appModuleHandler.NVDAProcessID is gone appropriate backward compatibility solution for add-ons has been implemented.
### Summary of the issue:
Liblouis 3.22.0 has been released.

### Description of how this pull request fixes the issue:
Updates liblouis to 3.22.0. Changelog: https://github.com/liblouis/liblouis/releases/tag/v3.22.0

### Testing strategy:
Ran from sources and loaded the new braille table. Works as it should.
…t required (#13761)

Fixes #13659, #13735

Summary of the issue:
Certain applications don't provide a column order array. For the case of single column list views, a column order array is unnecessary, as a default mapping can be assumed.

Description of how this pull request fixes the issue:
For single column list views, map the first column in the UX, to the first column index: i.e. [0] is the column order array. When fetching from a multi column list view, log an error if the column order array is unknown.
Closes #13727

Summary of the issue:
eSpeak fails to perform automatic language switching for a common language codes "en", "fr",
Reported to eSpeak project: espeak-ng/espeak-ng#1200
A PR has been opened against eSpeak to fix this: espeak-ng/espeak-ng#1211

Description of how this pull request fixes the issue:
Creates a dictionary of aliases for language codes without locale, which map to appropriate supported languages with locale.
This may need to be added to over time as appropriate.
Integration tests have been added to ensure this list is comprehensive when we update eSpeak.
When eSpeak is unaware of a language code, the new behaviour is to:
• check for a default, if not then
• check for the language stripped of the dialect locale, if not then
• check for any matching language (regardless of dialect, e.g 'en-au' to 'en-us'), if not then
• ignore the language change
Fixes #13732

Summary of the issue:
OneCore keeps a cache of voices for NVDA in the registry.
OneCore fails to automatic language switch when remnants of a previously installed OneCore language exist in the cache.
This causes speech to not be announced.

This is only an issue for installed copies, as portable copies bypass the NVDA OneCore cache.

Description of how this pull request fixes the issue:
Drop the language change command if a given language is unsupported by OneCore.
@seanbudd seanbudd requested a review from a team as a code owner June 10, 2022 08:35
@seanbudd seanbudd requested review from feerrenrut and removed request for a team June 10, 2022 08:35
@seanbudd seanbudd mentioned this pull request Jun 10, 2022
3 tasks
@seanbudd seanbudd merged commit b6fef4d into beta Jun 10, 2022
@nvaccessAuto nvaccessAuto added this to the 2022.2 milestone Jun 10, 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 this pull request may close these issues.

9 participants