Skip to content

Branch for 2022.1#13452

Merged
feerrenrut merged 24 commits into
betafrom
branchFor2022.1
Mar 11, 2022
Merged

Branch for 2022.1#13452
feerrenrut merged 24 commits into
betafrom
branchFor2022.1

Conversation

@feerrenrut

@feerrenrut feerrenrut commented Mar 10, 2022

Copy link
Copy Markdown
Contributor

Branch for 2022.1 release, using commit 80e47b5 from master.
Changes still intended for 2022.1 should be "stacked" against this branch

Todo:

Merge not squash

MarcoZehe and others added 24 commits February 21, 2022 09:52
…re focusable and gain focus (#13357)

Fixes #13221

Summary of the issue:
In the Microsoft Edge Downloads manager (CTRL+J), as well as in the channel and DM outputs of the Slack app, HTML lists and list items are used to display the items. These are made focusable via either aria-activedescendant, or the rowing tabIndex pattern. The reason is that for compatibility, these can be used to host rich content, such as whole sub documents or controls. Until now, NVDA would not automatically switch to focus mode when focus lands on such a focusable list item.

Description of how this pull request fixes the issue:
This PR adds a rule for enabling passthrough mode if a list item that is read-only, has state focused, and at the same time its paarent is of role list and is focusable.
Fixes #13311

Summary of the issue:
NVDA causes a crash when interacting with 64-bit builds of Notepad+++ 8.3. This happens because Notepad++ developers decided to deviate from the official Scintilla interface (they character points are represented by longlong rather than long in 64-bit builds). Since this allowed them to introduce the support for much bigger files this change is going to stay and NVDA has to adapt (see explanations in notepad-plus-plus/notepad-plus-plus#11133).

Description of how this pull request fixes the issue:
For 64-bit builds of Notepad++ 8.3 and above longlong is used for representing characters points.

Testing strategy:

- Notepad++ 8.3 x64 no longer crashes and text can be read normally.
- 32-bit build of the same version of NPP works as well as it used to before this change.
- Older version of Notepad++ x64 works normally and long is used for characters points there.
- Different editor (teXnicCenter) using Scintilla is not negatively affected.
- The newly introduced appmodule can be imported by using from nvdaBuiltin.appModules import notepadPlusPlus in an add-on.
…creen (#13384)

Fix-up of PR #13242
Originally reported by @Stefan-Kliesch-FHP in #13348

Summary of the issue:
getStartOnLogonScreen can fail with UnboundLocalError when the autostart key does not exist.

Description of how this pull request fixes the issue:
If we failed to open autostart key we no longer try to access it.
…Word via UIA, using UIA remote ops (#13387)

This reintroduces the commits in pr #13283 which had been reverted in pr #13350. However it also addresses build issues.

Summary of the issue:
PR #13283 introduced support for reporting line/column/section numbers in Microsoft word via UI Automation, by using the UI Automation Remote Operations Library.
However, this PR had to be reverted in #13350 as
1. UIA would not initialize properly in binary builds due to a missing manifest file. (Improper initialization of UIA during NVDA start #13347)
2. NVDA failed to build on Visual Studio 2022. Specifically when building the Remote Ops library with msbuild, midl would fail with an error about a system environment variable being missing.
3. NVDA could no longer be built on Windows 7. (Impossible to build NVDA after introduction of UIA remote library #13346)

Description of how this pull request fixes the issue:
This PR reintroduces all of the original changes, but:
• setup.py now includes *.manifest files in the lib directory.
• NVDA again now requires Visual Studio 2019. However, builds will not fail if a newer version of Visual Studio (E.g. 2022) is installed along side 2019. this is managed by setting MSVC_VERSION in scons before it looks for Visual Studio, so that it specifically selects VS 2019 (VC 14.2).
Although building on Windows 7 could not be fixed, the readme now notes that only building on Windows 10 and higher is supported.
Remove code deprecated in #12510

Summary of the issue:
Deprecated code needed to be removed from the API proposed in #12510

Description of how this pull request fixes the issue:
Commits to the API proposed in #12510
versionInfo.copyrightYears has not yet been updated to include 2022

Description of how this pull request fixes the issue:
versionInfo.copyrightYears is updated to include 2022
Initially changes for 2021.3.1 were delivered to beta, subsequently it was decided to avoid complications with translations, to make changes directly on RC.
The changes were cherry picked from beta.
There were then several more changes made squashed / merged to RC
These changes need to be cherry picked back into the beta branch.
This was done in #13185

Changes for 2021.3.3 were cherrypicked directly to rc.
But because rc and beta/master have diverged, these changes need to be cherrypicked back to master and beta.
An exchange of merging master and beta has already occurred since the last release.
As a result, these changes need to be cherry-picked directly to master, to get eventually merged to beta.

Description of how this pull request fixes the issue:
Update the changes file from release-2021.3.3
No other introduced changes from 2021.3.2 and 2021.3.3 need to be cherry-picked back to master.
This is because 2021.3.2 and 2021.3.3 was created from code existing on master.
… globalVars.appArgs in a boolean context (#13386)

Fix-up of PR #13082

Summary of the issue:
PR #13082 added fake implementation of globalVars.appArgs which is used in cases where command line arguments are not parsed. It introduced two mistakes however:

The fake class was named DefautAppArgs (note the missing "l")
NVDA's logHandler uses appArgs in a boolean context to check if log viewer should be opened, determine if log fragment can be marked for copy etc. The new class was always True in a boolean context.
Description of how this pull request fixes the issue:
The class is renamed to DefaultAppArgs.
logHandler no longer checks boolean value of appArgs.

This is safe since:
Both logHandler.Logger.markFragmentStart and logHandler.Logger.getFragment are used only in NVDA and they are invoked by the user action (even before #13082 appArgs was always truthy in that context).

The check for appArgs being falthy in logHandler.Logger._log introduced in 2827a34 can also be safely removed since even for NVDA_slave activateLogViewer is set to False (only two cases where it is set to True occur when user invokes log viewer via keyboard command. this check has been added not for any additional security but just to avoid AttributeError being raised when trying to access globalVars.appArgs.secure when logging from slave.
Fixes regression caused by #13364
Closes #13397

Summary of the issue:
The version matching to apply the new NP++ 8.3+ behavior was incorrect, as it doesn't work for versions like 8.2.1 and 8.1.9.2.

Description of how this pull request fixes the issue:
Only match against the first character of the minor version.

Testing strategy:
Tested on version 8.1.9.2, 8.2.1, 8.3 and 8.3.1 of NP++
Help investigate #13401

Summary:
An unknown issue caused a system test failure.
When investigating it wasn't clear whether the second speech sequence made it to the 'spySynthDriver'.

This change adds further logging to the spy's implementation of synthDriver.speak
Summary of aria-details was not able to be reported in FireFox.

Explanation:
Firefox does not yet expose the IA2 attribute "details-roles", used as a proxy / optimization for fetching details relations.
The absence of this prevented the details summary being fetched.
Instead, just rely on fetching the details relation.
Background:
Improved support for reporting details summary: #13106

Summary:
Web authors would like to start using aria-details, however:
- It is not enabled by default.
- There is no default gesture to fetch the details.

Information about longdesc:
- The longdesc attribute is only valid on an img element.
- longdesc does not seem to be exposed in Chrome / edge, it continues to work in Firefox.
- longdesc is deprecated, mdn advises not using it and transitioning away from current uses.
- longdesc has an incompatible UX with aria details. The longdesc attribute contains a URL,
  the browser exposes an action, when triggered the URL is opened in a new tab. In contrast,
  Aria details is expected to be read without leaving the page.
- Anyone who still relies on longdesc support can assign an alternative gesture.

Description of Change:
- NVDA+d now runs aria-details summary script
- Report 'has details' by default
…r of maximum concurrent jobs to speed up builds by default (#13371)

Reverts #13226

Summary of the issue:
While building NVDA with multiple jobs leads to faster build times, it also leads to scrambled output which can be quite annoying when debugging.

Description of how this pull request fixes the issue:
Disable multiple jobs by default but warn users to run with -jX to get a faster build if applicable.
Values in the State/Role enums are getting large, it is easy for a developer to accidentally duplicate a value.

NVDA states were initially defined as powers of 2 so that the states property on NVDAObject could return multiple (bit flag) values within an integer. However, for a long time now, the states property returns a Python set. The values no longer have to set a unique bit.

Also, now that Role/State constants are enums, we no longer depend on manually
matching values printed in logging with the values in the file (because
enums are named).

Change:
- Decorate Role/State enum classes with unique.
- Prevent errors manually assigning a value by using auto.
Fixes #11568
Partial fix for #12920

Summary of the issue:
Recent versions of Adobe Reader introduced a Protected Mode, where by the Adobe Acrobat process has less privileges and is sandboxed. This ensures that insecure PDFs do not have a chance to affect the rest of the Operating System.
By default Adobe Reader is configured to enter its Protected mode on start-up, and to set the 'isAppContainer' attribute on its process token.
There seems to be a bug however, either in Adobe Reader, the Windows OS, or NVDA (NV access and Adobe cannot be sure) that causes the Adobe Reader process to become unstable when NVDA tires to register IAccessible2. Specifically, the call to CoGetPSClsid seems to start making things unstable. The further call to CoRegisterPSClsid fails, and then eventually the process completely crashes randomly in places such as TSF initialization.
The upshot is that If Adobe Reader is started when NVDA is running, many errors are written to NVDA's log, and Adobe Reader closes straight away.

Description of how this pull request fixes the issue:
NVDAHelper's IAccessible2 registration code now checks if the process token has the 'IsAppContainer' attribute, and of so refuses to install IAccessible2 support.
Note that Adobe Reader itself does not require IAccessible2 to function.
Also, the 'IsAppContainer' is only set on very heavily sandboxed sitations, and is not the same as the app container that is used for Windows Desktop Bridge apps. Thus, refusing to install IAccessible2 into processes with the 'IsAppContainer' attribute has no other known side affects.
…essageBoxActive (#13376)

Relates to #13007, as the new design should be backwards compatible, we can implement the API changes as-is for 2022.1.
Follow up to the API proposed in #12984

Summary of the issue:
The API for gui.message had not yet been determined for 2022.1, as per #13007.
As the future API is intended to be backwards compatible, this PR commits to the API proposed in #12984.

Description of how this pull request fixes the issue:
gui.IsInMessageBox was a boolean, this has been replaced by a function gui.message.isModalMessageBoxActive, which tracks if a messageBox is open in a safer manner.

Changes logic gui/message.py to be safer with locking and handling errors.
State/Role mappings of IA to NVDA enums containined duplicates:
- IAccessibleRolesToNVDARoles
- IAccessibleStatesToNVDAStates
…e user guide to correct missing information (#13373)

Addresses a concern raised in #13354

Summary of the issue:
In this comment, @CyrilleB79 pointed out that the user guide does not indicate that screen layout is always used in Outlook, irrespective of the "Use screen layout" setting.
It seems reasonable for the user to assume, since it isn't otherwise indicated, that turning off screen layout will be effective anywhere browse mode is used, when in fact this is not the case.

Description of how this pull request fixes the issue:
I added a note to the section in the user guide, explaining that this option is not applicable to Microsoft Office applications.

While looking at the section, I thought that it didn't really explain well the difference between screen layout and not screen layout, and used terms like "fields" in a way that most users might not associate with the elements changed by the option.

* Rewrote and expanded the Browse mode: "Use Screen Layout" section in the user guide.

* The primary focus was to add a note explaining that the option is inapplicable for Microsoft Office apps. (Per comment on #13354)
* Removed extraneous words ("content in", first sentence), and fixed plural-singular errors.
* Generally expanded the section to better explain the option, and give an example.
Mistyped settingsID as setingsID on lines 157 and 158 in nvda\source\autoSettingsUtils\autoSettings.py

Description of how this pull request fixes the issue:
corrected, just added a letter 't'.
Summary of the issue:
BrxCom wrapper is not compatible with Python 3 anymore and causes NVDA to crash.
Furthermore BrxCom is deprecated and is no longer supported.

Description of how this pull request fixes the issue:
BrxCom support via wrapper dll removed from braille display driver.
…#13437)

Microsoft Word 2016 exposes a rich UI Automation implementation. For some time now, users have been able to optionally turn this on with an advanced setting. NVDA's support for MS Word via UIA has major performance advantages over the older object model support, so NVDA should use the UIA support by default where available. However, as the UIA implementation improved throughout Office 2016's lifetime, we should only enable our support for recent builds of Office 2016, specifically for build 15000 and higher, and when only on Windows 11.
This was previously tried in pr #12770 but reverted in pr #12989
The main argument for reverting was the lack of math support, and ability to report line column and section numbers.
These have all been since addressed.

Description of how this pull request fixes the issue:
NVDA now uses UI Automation to access Microsoft Word document controls by default when on Windows 11, for Microsoft Word version 16.0.15000 and higher.
The Use UI Automation to access Microsoft Word document controls when available checkbox has been replaced with a combo box with the following values:
• Default (where suitable)
• Only where necessary: where the Microsoft Word object model is not available at all
• Where suitable: Windows 11 / Microsoft Word version 16.0.15000 or higher, or where the Microsoft Word object model is unavailable
• Always: where ever UI automation is available in Microsoft word (no matter how complete).
If the older checkbox was previously checked, the setting will be set to Always.
Fixes #13408

Summary of the issue:
Liblouis 3.21.0 has been released.

Description of how this pull request fixes the issue:
Updates liblouis to 3.21.0 which mainly brings major updates for Hungarian and German. Changelog.
@feerrenrut feerrenrut changed the title Branch for2022.1 Branch for 2022.1 Mar 10, 2022
@AppVeyorBot

This comment was marked as outdated.

@AppVeyorBot

This comment was marked as outdated.

@feerrenrut feerrenrut marked this pull request as ready for review March 10, 2022 08:08
@feerrenrut feerrenrut requested review from a team as code owners March 10, 2022 08:08
@feerrenrut feerrenrut requested review from Qchristensen and seanbudd and removed request for a team March 10, 2022 08:08

@Qchristensen Qchristensen left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All reads well, great work!

@feerrenrut feerrenrut mentioned this pull request Mar 11, 2022
4 tasks
@feerrenrut

Copy link
Copy Markdown
Contributor Author

I've reviewed the change log via https://raw.githubusercontent.com/nvaccess/nvda/branchFor2022.1/user_docs/en/changes.t2t
I'll merge this now, a follow up PR will need be created to add the release highlights.

@feerrenrut feerrenrut merged commit ace0786 into beta Mar 11, 2022
@feerrenrut feerrenrut deleted the branchFor2022.1 branch March 11, 2022 08:33
@nvaccessAuto nvaccessAuto added this to the 2022.2 milestone Mar 11, 2022
@CyrilleB79

Copy link
Copy Markdown
Contributor

@feerrenrut , this PR should be included in 2022.1 milestone, not 2022.2. Thanks.

@feerrenrut feerrenrut modified the milestones: 2022.2, 2022.1 Mar 12, 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.