Skip to content

Merge master to beta#15900

Merged
seanbudd merged 195 commits into
betafrom
master
Dec 11, 2023
Merged

Merge master to beta#15900
seanbudd merged 195 commits into
betafrom
master

Conversation

@seanbudd

@seanbudd seanbudd commented Dec 11, 2023

Copy link
Copy Markdown
Member

We intend to branch for beta this week.

seanbudd and others added 30 commits September 5, 2023 12:57
Fixes #10807
Reintroduce the changes of PR #14900 that were reverted in #15237.

Summary of the issue:
See #14900 for the initial issue.

#14900 had to be reverted since it caused any speech sequence containing a character mode command to spell the whole speech sequence with Code Factory driver. Although the issue is in the driver and not NVDA, it has been decided to wait for an API-breaking release to issue this fix so that Code Factory synth users be not impacted by this bug.

Description of user facing changes
Same as #14900, that is:

Shortcut key reporting will be improved in some cases. This applies to on-demand reporting (shift+numpad2) as well as when "Report Object Shortcut Keys" option is checked in Object presentation settings.
The cases where it should be improved are:

punctuation key, e.g. "." (dot)
letter keys when the name of the letter is not spoken the same way as the equivalent one-letter word, e.g. "à" or "y" in French.
Braille reporting should remain unchanged.
Description of development approach
Revert #15237 to reintroduce the changes in #14900 and remove change log modifications.
Fixes #14137

Summary of the issue:
SecureDesktopNVDAObject is used to notify the user and API consumers that NVDA has entered a secure desktop.
This creates a valid NVDAObject, backed by the secure desktop.
The running instance of NVDA enters sleep mode when SecureDesktopNVDAObject is focused, signifying a switch to a secure desktop. Then a new instance of NVDA in secure mode starts on the secure desktop.
The SecureDesktopNVDAObject is unused, apart from being an API endpoint to notify consumers, as NVDA sleeps after it is created.

Handling SecureDesktopNVDAObject requires special cases to be constructed.

NVDA generally uses extension points for this API use case.

Description of user facing changes
None

Description of development approach
SecureDesktopNVDAObject is replaced with an extension point that only provides a boolean state on the existence of the secure desktop.
A fake NVDAObject is used to enable sleep mode while the secure desktop is active.
…tateChange extensionPoint (#15392)

Fix-up of #14488

Summary of the issue:
In #14488, no documentation for the new extensionPoint was added to the master list of extension points in the developer guide.
(I wish there was a way to remind of this when contributing extensionPoint creations)

Additionally, I noticed an oddity in the documentation of the extensionPoint itself, which may or may not be intended.

Description of user facing changes
Improved documentation for developers.

Description of development approach
Added a new section to the Developer Guide chapter on Extension Points, listing the new Action, winAPI.secureDesktop.post_secureDesktopStateChange.
Fixed a terminology error in the head section of the chapter (I had previously called extensionPoints a module, when it should have been a package).
Noticed that in the usage example given in the winAPI.secureDesktop module docstring, there was a call to notify(). AFAIK, the general consumer of this extensionPoint, who registers something to it, shouldn't also be calling notify on it. I removed that example line, replacing it with a comment to put the subsequent unregister() call in context. @seanbudd please check my reasoning.
Summary of the issue:
The link to coding standards is broken in the contributing documentation.
Removes hack introduced in #15402

This removes the hack introduced for 2023.3 from 2024.1.
The hack in 2023.3 specifically recognises older versions of the add-on as incompatible.
The hack is not necessary with 2024.1, as the usual incompatibility warning applies when updating
Fixes #15018

Summary of the issue:
In the add-on store, the "include incompatible add-ons" checkbox is not aligned with the combobox at its left.

Description of user facing changes
The checkbox will be aligned horizontally.

Description of development approach
In the guiHelper, added the wx.EXPAND flag so that it is centered vertically in the sizer.

I do not know if other items may benefit from this flag; we could add them in the if clause if / when needed in the future. such Horizontal sizers are less common in NVDA's GUI however.
Some braille related code was marked to be removed from NVDA 2024.1 (see changelog entries)

Description of user facing changes
None, as code is already written to be disabled in 2024.1.

Description of development approach
Removed the deprecated code.
…#15434)

Fixes #15426

Summary of the issue:
The "Don't show this message again" checkbox in the "Add-on Store Warning" dialogue box should be on the left side of its label, but is currently on the right side of its label.

Description of user facing changes
Visually the "Don't show this message again" checkbox is located to the left of its label.

Description of development approach
Change the way to add CheckBox from addLabeledControl to addItem to be consistent with other GUIs.
Summary of the issue:
Change log entries from contributors are currently requested to be included in the PR description rather than code changes.
This is because entries are prone to merge conflicts, however GitHub allows you to handle these through the web UX.
Alternatively, NV Access can always resolves these via git locally.

Change log entries in the PR description are harder to review, as you cannot make suggestions using GitHub's PR review UX.
This also adds unnecessary work for NV Access, to checkout PRs and copy paste the changes.

Description of user facing changes
contributors are encouraged to add changes directly to the changes file rather than the PR description
Summary of the issue:
NVDA does not currently detect standard HID braille displays using the Bluetooth Low Energy transport. This PR adds the BLE GATT HIDS UUID to be detected as a valid Bluetooth HID device.

Description of user facing changes
BLE HID braille displays will now be detected. No other user facing changes.
#15400)

Fixes #15395

Summary of the issue:
There are many instances in NVDA where we implicitly or explicitly (with typing) expect an NVDAObject but code uses properties only available for a NVDAObjects.window.Window.
This is because most objects are Windows and usually these implicit expectations are safe.
This PR attempts to catch some known instances where these expectations are not safe.

Description of user facing changes
Fix error when switching to the secure desktop

Description of development approach
Improve typing and catch some likely cases where a Window should not be expected
…r inactive (#15450)

fixes #14969

Summary of the issue:
Sometimes, it would be desirable perform actions when browse mode state changes. For example, this may be useful to activate or deactivate a profile when entering or exiting browse mode.

Description of user facing changes
Add-ons and other components can be notified about browse mode state changes.
Description of development approach
A treeInterceptorHandler.post_browseModeStateChange extension point has been added. The browseMode parameter represents the state of browse mode (True or False).
seanbudd and others added 18 commits December 4, 2023 14:39
Fixes #15796

Summary of the issue:
Sometimes an add-on file fails to download correctly.
This causes an error that isn't recoverable without notification to the user.

Description of user facing changes
If an add-on download file cannot be successfully loaded as a zipfile, warn the user that the installation has failed and let the user continue with their tasks.

in my opinion this fix is not worthy of a changelog entry

Description of development approach
Catch error
Fixes #7070
Fixes #10833

Summary of the issue:
The Clean function of comInterfaces_sconscript cleans up the files tracked by git

Description of user facing changes
None

Description of development approach
Add exclusion items in the cleanup matching function in comInterfaces_sconscript

Testing strategy:
Run scons source
Run scons -c
Run git status
Run scons source
Run git status
Run runnvda
Check if the tracked files in git have been deleted after observation and cleaning
Fixes #15029
Fixes #15568

Summary of the issue:
Disabled add-ons were not listed in the updatable add-ons tab.
Add-ons with overridden compatibility were also not listed in the updatable add-ons tab.
Disabled incompatible add-ons should trigger the dialog to override when attempting to update.

Add-on statuses were the same for each tab of the add-on store, this limited determining actions for the add-on.

Description of user facing changes
Add-on status is now contextual. to the add-on store tab Updatable/downloadable information is only shown on the updatable and available add-ons tab. Installed add-ons tabs now only show statuses relevant to installed add-ons. This means "update available" and "downloaded, pending install" will not be listed in the installed add-ons tab.

Disabled and incompatible add-ons can now be updated.

Description of development approach
Created a new status and action for incompatible add-ons with an incompatible update available.

Ensure available and updatable statuses are checked before statuses for installed add-ons.
Ensure available and updatable statuses are only checked for their relevant tabs.
This means disabled and incompatible add-ons return updatable status before checking their disabled/compatibility state.
Summary of the issue:
Liblouis 3.28.0 has been released.

Description of how this pull request fixes the issue:
Update Liblouis to 3.28.0, including new Braille table.

Testing strategy:
Verified that Braille functions without errors and that new table is selectable.
…8 and later (#15823)

Summary of the issue:
NVDA checks for Windows 7/8 UIA interfaces at startup when the minimum version is Windows 8.1.

Description of user facing changes
None

Description of development approach
At startup, NVDA's UIA handler thread will instantiate Widnows 8 UIA interface direclty as opposed tr doing it behind a try/except block. This also removes the check for UIA8 flag when instantiating later UIA interfaces. As part of this work, UIA handler main file was linted and some functions marked as too complex (according to Flake8).
Part of issue #15576.

Summary of the issue:
Now, add-ons can be reviewed from GitHub discussions, linked in the Available add-ons tab of the store.

Description of user facing changes
This improves documentation for this feature:

Explained that this action can be found in the Available add-ons tab.
Remove reference to comment on addon versions, since comments aren't longer added to add-ons metadata.
Fixes #15881

Summary of the issue:
The "level" object attribute for IAccessible2 to specify the level of a heading is both mentioned in the Core Accessibility API Mappings specification and in the IAccessible2::groupPosition documentation. However, NVDA was not supporting/evaluating this object attribute in order to determine the heading level, resulting in the heading level no longer getting announced once LibreOffice only reports the "level" attribute as specified and no longer the custom "heading-level" attribute that NVDA's soffice app module relies on.

Description of user facing changes
Reporting heading levels also works for LibreOffice version 24.2 and greater.

Description of development approach
Add handling for the "level" IAccessible2 object attribute when determining position info for an IAccessible2 object. In the soffice app module, add a comment that the custom "heading-level" attribute is only needed for Apache OpenOffice by now, since LibreOffice has already been reporting the "level" object attribute in addition to the "heading-level" attribute since LibreOffice 5.0.
Fixes #13372

Summary of the issue:
When rebuilding dist, some code changes were not detected. SCons does not trigger a new build.

Description of user facing changes
None

Description of development approach
dist will always be considered obsolete.
Fixes #15872

Summary of the issue:
Since python 3.10, auto completion in the Python Console would fail when trying to complete a string that matches an AutoPropertyObject getter raising NotImplementedError. This is because starting from 3.10, the code responsible for matching no longer catches exceptions for getattr. Instead, it ensures that property descriptors are filtered out. In my opinion, solution from Python is far from ideal, since it doesn't deal with other descriptors, like our baseObject.Getter.

Description of user facing changes
Fixes auto completion

Description of development approach
Copied and adapted code from Python 3.9.
Closes #12445
Follow-up of #15013.

Summary of the issue:
When possible NVDA needs to distinguish between singular and plural in UI messages. The impact may be more significant in languages such as Slavic ones, where there are more than one plural form.

Description of user facing changes
In NVDA UI messages, i.e. in GUI or when NVDA speaks or brailles messages, messages will use singular/plural form as needed.

Description of development approach
Look for all strings containing "%" or "{" in the .pot and check if a plural form is needed. And replace _ / pgettext by ngettext / npgettext where needed.
Some expression containing a number have been pluralized even if they do not differ between singular and plural form in English due to the difference being visible in translations due to a different grammar. E.g.: "{numFingers} finger {action}" in English to be translated to "{action} {numFingers} doigt" (singular) vs "{action} {numFingers} doigts" (plural) in French.
table-rowcount and table-columncount control fields of the virtual buffer's text info have had to be converted to integer (previously strings), so that computation can be done.
No change log needed except for the code's API breaking change.
Testing strategy:
Manual smoke test on a subset of strings.
Feedback from translators during translation period and communication with the translators mailing list
…in braille (#15858)

fixes #15844

Summary of the issue:
The report current focus and navigator object commands reports more information then NVDA normaly does by navigating to an object. Because of this, A user that only uses braille is unable to get this information. They are also unable to see acuratly what is selected if the selection is grater then one line, because when tethered to review, the selection information for text is lost, and when tethered to focus, the text is un selected when moving up or down a line.

Description of user facing changes
A user that only uses braille will be able to get the information described above

Description of development approach
I changed both the report focus and navigator object scripts, so that instead of calling speakObject, they call getObjectSpeech and saves its return value.
It then uses speech.speech.speak to speak this information
I then go over the list and remove every item that isn't a string, and then joins it with ' '.join
I then show this string in braille
In the reportCurrentSelection script, I get the information spoken using the _getSelectionMessageSpeech function, then show it in braille
…15873)

Closes #15806

Summary of the issue:
NVDA allows to change the currently used speech mode by pressing NVDA+s. By default this gesture cycles between 'talk', 'beeps', 'on-demand' and 'no speech'. For many users having ability to switch to beeps or on demand is unnecessary, and they have no need for modes different than speech and no speech. For other beeps mode is certainly useful, but it is much more important to be able to quickly switch between speech and no speech, so beeps mode just makes the goal slower to achieve. With the introduction of fourth speech mode in #15804 it has been decided that users should be given ability to disable speech modes they do not need to use.

Description of user facing changes
The new checkable list containing all speech modes (all are initially checked)has been added into the Speech settings panel. When switching between modes with NVDA+s only modes which are checked in the list are included. When applying settings selected modes are validated, to make sure at least two modes are checked. When the 'talk' mode is disabled user is warned that they may be left without any speech.

Description of development approach
Configuration spec has been expanded to store list of disabled modes - this ensures that if any new mode is added to NVDA it is enabled by default in the cycling script. Speech settings panel now contains a list of all the speech modes, only enabled one are checked. When introducing validation for the speech settings panel it has been discovered that code responsible for checking panel's validity displays a warning about it being invalid, prevents saving invalid config, yet after dismissing the warning settings dialog gets closed. Since this is not optimal validation for settings dialog has been modified, so that after warning is dismissed settings remain open, and the invalid control is focused. The cycling script has been modified to only cycle between enabled modes. Unit tests verifying its behavior, both when no modes are disabled (the default) and some are disabled, were added. To make them work it has been necessary to perform a small modification to the method which lists configuration profiles in the config module, it assumed that profiles directory always exists, which is not true in unit tests. Now when the directory is missing appropriate warning is logged, and empty list is returned. User guide has been expanded to describe newly added control.
Link to issue number:
None

Summary of the issue:
The add-on store adds additional requirements to manifest files for add-ons.
These should be explained in the developer guide.

Description of user facing changes
Add explanation for convention for add-on version numbers.
Add convention for add-on ID to be lowerCamelCase.
Add https convention for URL
)

Related to #15894

Summary of the issue:
PR #15873 changed the validation for settings, so that when given control is invalid focus is moved to it. Unfortunately this works only when user didn't switch to a different panel. If they did the correct control was announced in speech, but the old panel is shown on screen.

Description of user facing changes
Invalid controls are no longer focused. This is still an improvement compared to 2023.3, where if one control was invalid the entire settings dialog was closed, thereby discarding all changes performed by the user.

Description of development approach
Removes calls to SetFocus from the validation code.
Closes #15895

Summary of the issue:
Activation of routing cursor in the braille viewer by hovering the mouse on the cell does not work anymore in last alpha. This is due to wxPython upgrade, since int types is now expected for some functions when float was tolerated before. More specifically, wx.Colour now expects 3 integers.

Description of user facing changes
Mouse hovering to activate the routing cursor of a cell in the braille viewer works again.

Description of development approach
Convert the 3 numeric values passed to wx.Colour to integers.
…idelines to help section (#15896)

Added Link to Liblouis to be consistent for what has been done in the synth support section
Added link to contributing guidelines to not only encourage to submit issues and requests, but also to encurage active contribution through other activities as well.
closes #15815

Summary of the issue:
Store the Poedit, PowerPoint, miranda32, vipmud, and Eclipse appModules in separate categories within the command gesture category.

Description of user facing changes
When the user is in one of the applications (poedit, powerpoint, eclipse, vipmud, and miranda32), and if they wish to view the keyboard shortcuts offered by the appmodule, they can consult them in the command gesture category under the section named after the application rather than in various.

Description of development approach
I have added in each appmodule a variable that contains the name of the category, and for each keyboard shortcut, I have added the name of the category associated with that command.
@seanbudd seanbudd requested review from a team as code owners December 11, 2023 00:08
@seanbudd seanbudd requested review from Qchristensen and michaelDCurran and removed request for a team December 11, 2023 00:08
@seanbudd seanbudd added this to the 2024.1 milestone Dec 11, 2023
@seanbudd

Copy link
Copy Markdown
Member Author

We intend to branch for beta this week.

@AppVeyorBot

Copy link
Copy Markdown

See test results for failed build of commit bc762a0d81

@seanbudd seanbudd merged commit 288965b into beta Dec 11, 2023
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.