Conversation
Merge branch for 2022.4 to master
Merge beta to master
Summary of the issue: The Sonic library used to speed up eSpeak is many years out of date. Description of how this pull request fixes the issue: Updates to latest commit. Testing strategy: Verified that rate boost is still functional. Merge early to catch issues before release.
Closes #13362 Summary of the issue: The majority of system tests fail when run on non-English systems. On my system (French), failures are due to the following reasons: - Default NVDA's UI language is user's default Windows language, thus the messages of NVDA are reported in this language. - If not specified, the language of an HTML page is set by the browser itself which may not be English (system language?) - According to the locale keyboard layout, someemulated keypress may fail. E.g. "NVDA+\" cannot be emulated with French keyboard layout since \ (backslash) can only be accessed with modifiers (AltGr). In #13362, it was also stated that Chrome's language may make some tests fail. That's not the case on my French system. But we may imagine that the keyboard shortcuts could vary from one language to another, e.g. "Alt+d" to focus the address field. Description of user facing changes System tests now pass on French system. It should pass on any system regardless of its language. Description of development approach 1. NVDA interface language is forced to English in the various config files. 2. HTML sample content forced to English (via lang HTML attribute) 3. Removed the unneeded NVDA+\ custom gesture which cannot be executed without modifier on some keyboard layout (e.g. French). Actually, there is no need for custom gesture since `NVDA+d` is now a native gesture of NVDA for the same script. Even if not used anymore for now, I have not removed the possibility to use a custom gesture file in case an unassigned script has to be tested in the future. Should it be the case, care should be taken to assign a gesture that can be executed on any keyboard layout, i.e. use a letter rather than punctuation as the main key name. E. Chrome UI language is forced to English via command line parameter (see List of Chromium Command Line Switches « Peter Beverloo: https://peter.sh/experiments/chromium-command-line-switches/) Note: For the Chrome command line --lang parameter to be taken into account, it should be ensured that no previous Chrome window is open when the tests are run. --- * Make system tests pass when run locally on non-English systems. For this, the following changes have been made: - NVDA interface language forced to English (in config files) - Chrome UI language forced to English (via command line parameter) - HTML sample content forced to English (via lang HTML attribute) - Removed the unneeded NVDA+\ custom gesture which cannot be executed without modifier on some keyboard layout (e.g. French) Note: For the Chrome command line --lang parameter to be taken into account, it should be ensured that no previous Chrome window is open when the tests are run. * Bump CI * Remove unused .ini file. * update changes Co-authored-by: Sean Budd <sean@nvaccess.org>
Merge branch for 2022.4 to master
Merge branch for 2022.4 to master
Merge beta to master
Merge beta to master
…n Windows 11 (#14221) Fixes #13841 Summary of the issue: In Windows 11, NVDA does not announce search highlights when entering Start menu. Description of user facing changes In Windows 11 21H2 and 22H2, NVDA will announce search highlights as part of the search box description (example: search box edit type here to search, search highlight text). Description of development approach _get_description method is introduced in appModules.searchui.StartMenuSearchField class that will obtain search highlights text (last child of the search box element with a unique UIA Automation Id) and treat it as the description text for the search field. To account for Windows 10 and to handle search results display (when search highlights text is unavailable), return the description provided by base UIA object if search highlights element is gone. With this change, if no search term is entered, NVDA will announce search highlights as part of search field description in speech and braille. * appModules/searchui: add support for Search HIghlights anouncement in Windows 11 . Re #13841. In Windows 11 (21H2 and 22H2), Search Highlights was added - a text with top search suggestion of the day. The highlight text lives in the last child of search box element with a specific UIA Automation Id, so try detecting this and incorporate its name as search field description, allowing search highlight text to be announced when entering Start menu. Of course if search highlights is not present (Windows 10), return whatever description the base UIA object provides. * appModules/searchui: add type hint for description getter. Re #13841. Comment from Sean Budd (NV Access): add type hint please (returns str). * update changes Co-authored-by: Sean Budd <sean@nvaccess.org>
Merge beta to master
…itely reported in Wordpad and other edit fields (#13942) Fixes #13959 Summary of the issue: In Wordpad or in log viewer, pressing NVDA+F reports "default color on default color" as color information in formatting information. This information is of no use to know the color really displayed, what may be necessary when working with sighted persons. In log viewer and other system edit fields, default colors are the ones provided by the system and can vary according to system settings, e.g. enabling high contrast theme. In Wordpad, "Default color" is meant to be the one called "Automatic" and corresponds to system color. Description of user facing changes When pressing NVDA+F in Wordpad or NVDA log viewer, NVDA reports the text / background color and in addition, indicates if it is the default color, i.e. system color. I have not bothered to report the application's color "Automatic" in Wordpad instead of "default" because it would probably need to create a WordPad appModule and specific processing just for this distinction; I think it was not worth it. In MS Word, when the text color is set to "Automatic", "Automatic color" is reported instead of "default color". Indeed, this matches Word application terminology; in Word, automatic color and default color are two distinct concepts: "automatic" is a color which adapts to favor a sufficient contrast with the background "default color" is the color of the text when you open a new document (if registered in normal.dot) or when you remove formatting (when registered in the current document only). Description of development approach According to the CHARFORMATW structure for the class EditTextInfo and to ITextFont::GetForeColor for the class ITextDocumentTextInfo, the system colors are used for default colors. Thus, I retrieve these colors in these cases.
…#14228) When accessing Microsoft Excel via UI Automation and moving through a table in a spreadsheet, NVDA does not automatically report row and column headers for the currently focused cell. Description of user facing changes NVDA will now automatically report the row and column headers for the currently focused cell in an Excel table via UI Automation, if the row / column header is different from the last focused cell, and the spreadsheet author has enabled a header row and special first column. Description of development approach • ExcelCell UIA NVDAObject: don't explicitly set columnHeaderText and rowHeaderText properties to None. This was done during prototyping and was never removed. • UIA NVDAObject: implement the tableID property which then allows the code that reports column and row headers to correctly identify when still in the same table and therefore can stop repeting the same column and row header if it is the same as the last focused cell.
Issue found while working on #14233 (testing). Link to issue number: None Summary of the issue: When an error occurs while switching profile manually, a message box indicates that there has been an error, but nothing in the message box nor in the log indicates the source of error (no traceback...). Description of user facing changes When profile switching fails, the traceback of the error is logged. Description of development approach Added the log
Summary of the issue: A security reporter might know of an approach or solution to a security issue. The current security policy does not prompt reporters to offer solutions or approaches to security issues. Description of user facing changes Security reporters are prompted to advise a solution or approach if known
Closes #13677 Summary of the issue: When deleting a profile, the confirmation dialog does not name the profile that should be deleted Description of user facing changes The name of the profile is added to the message box text, also, like the addons deletion dialog, cancel is the default to prevent accidental deletion. Description of development approach Change message box text to The profile {} will be permanently deleted. This action cannot be undone. Testing strategy: Deleted a profile, insured that the profile name is spoken
Merge beta to master
…mment mentions and Google Chrome location bar suggestions (#14222) Fixes #13772 Fixes #13764 Fixes #13522 Summary of the issue: • When starting to type an @mention in a Microsoft Excel comment, NVDA does not report available suggestions when arrowing through them. ( [Excel- Add @mention]: Screen Reader Users are not Notified when Search Suggestions Appear after Typing "@" in the comment #13764) • When typing in the Google Chrome location bar, NVDA does not report rich information for each suggestion, nor does it report when a suggestions control (switch to tb, remove suggestion) is selected. (Chrome: Omnibox: User is not notified of useful information in the first item of keyword search #13522) • As a developer, adding support for new suggestion scenarios is tedious as specific mappings must be always made. Description of user facing changes • NVDA will now report the selected suggestion when arrowing through suggestions when typing an @mention in a Microsoft Excel comment. • NVDA will report the selected suggestion or suggestion control (switch to tab, remove suggestion) in the Google Chrome location bar. Description of development approach Make support for suggestions on editable text fields more generic, allowing it to be supported in more places without having to specifically choose particular overlay classes. This adds support for reporting @mention suggestions in Microsoft Excel comments, and reporting of suggestions and related controls in the Google Chrome location bar. Specific changes: * IAccessible NVDAObject: implement the controllerFor property making use of IAccessible2 relations * NVDAObject: add an isDescendantOf method which should return True if the object this method is called on is a descendant of the given obj argument. The base method raises NotImplementedError. Efficient implementations for UIA and Ia2Web have been provided. * Implement event_selection on the base NVDAObject, which reports the object being selected, if the current focus is controlling an ancestor of the selected object. This replaces SuggestionListItem UIA NVDAObject's event_UIA_elementSelected logic. Now it is more generic, and works purely on tree topology, rather than checking the name and appModule etc. * Remove event_selection implementation from IAccessible NvDAObject as the base handles this now. * Add an event_controllerForchange method to the base NVDAObject which does nothing. * UIA NVDAObject: implement event_UIA_controllerforchange to directly call event_controllerforchange, allowing for more generic code, but still backwards compatibility for subclasses to still override event_UIA_controllerforchange if they need to. * behaviours: * Rename EditableTextWithSuggestions to InputFieldWithSuggestions and inherit directly from NVDAObject making this class more generic. * InputFieldWithSuggestions class: implement event_controllerForChange which will fire the suggestionsOpened and suggestionsClosed events based on whether there are objects in the controllerfor list. this code was taken from SearchField UIA NVDAObject's event_UIA_controllerforchange. * Rename EditableText to EditabletextBase * Add a replacement EditableTextWithSuggestions class that inherits from both InputFieldWithSuggestions and EditableTextBase * Add a replacement EditableText class which inherits from EditableTextwithSuggestions and EditableTextBase. Essentially all this builds suggestion support into EditableText, but keeps the EditableTextWithSuggestionsClass specifically available for compatibility.
Merge beta to master
…the synthesizer. (#14266) Summary of the issue: Read the following line with OneCore (e.g. Zira) and symbol level all: What is USD???? I can hear: "What is four US dollars question" Instead I expect "What is USD four question" The issue is due to the fact that the synth interprets "USD 4" as "four dollars". Instead, the repetition of "question" should not handled with the rest of the text by the synth but reported as is. The impacted synthesizers are: OneCore SAPI5 IBMTTS On the contrary, eSpeak is not impacted. Probably because it does not handle internally expressions such as "USD 4". Description of user facing changes The user should not hear anymore issues when reporting repeated symbols. Description of development approach Two spaces are added instead of only one between the rest of the text.
Related nvda-cldr update: nvaccess/nvda-cldr#3 Summary of the issue: Periodically CLDR update: CLDR team released version 42 of the CLDR package. Description of user facing changes New emojis and characters
…nsure we propagate alwaysRerenderDescendants if appropriate before returning. (#14269) Summary of the issue: With the Firefox accessibility cache enabled, the "Show options" button above GitHub issue comments sometimes doesn't render correctly in browse mode. Pressing enter on it won't open the menu. Sometimes, completely irrelevant text (potentially even from other tabs) gets rendered instead of that button. Description of user facing changes Fixes the above issues. Description of development approach Previously, the vbuf backend check for allowReuseInAncestorUpdate was before alwaysRerenderDescendants. This meant that if the node had allowReuseInAncestorUpdate and its parent had alwaysRerenderDescendants, we wouldn't propagate alwaysRerenderDescendants down the tree. That meant that we might not pick up changes in a subtree which was moved at the same time as descendants were mutated. I fixed this by moving the check and propagation of alwaysRerenderDescendants before the allowReuseInAncestorUpdate check. This still results in an early null return. It just ensures we propagate alwaysRerenderDescendants before we do.
Summary of the issue: A script to toggle delayed character description has been asked. Description of user facing changes Added a script to toggle delayed character description. Keep this script unassigned because it does not seem to me that this feature deserve a predefined gesture. Description of development approach Added the script in global commands, as other such scripts.
Some config can affect the way the test samples are prepared, E.G. moving focus / review to the start location. For all tests that modify NVDA config, ensure this happens after the initial set up is completed. Introduce a new helper to allow modifying multiple settings at once.
…ws 7 due to bad UIA client library marshalling and a limitation in comtypes. (#14275) Fixes #14270 Summary of the issue: when searching in the Windows 7 start menu or navigating in Windows 7 Explorer, the NVDA error sound is heard and a traceback is printed to the log at level error. The exception is a KeyError raised by comtypes, as it does not know how to unpack a variant of type VT_Unknown | VT_Array. However, the reason this variant is returned in the first place is because the UIA client library directly returns the provider's VT_Unknown | VT_Array variant on Windows 7, Which is useless for a client. On Newer Windows versions, the client library correctly marshals this to IUIAutomationElementArray per the UI Automation documentation. Description of user facing changes No error sound is heard and traceback is only printed to the log at debugWarning. Description of development approach Catch KeyError when fetching the UIA_ControllerFor property. An alternative could have been to limit the fetching of the controllerfor property to versions above Windows 7, but as official windows 7 UI automation documentation states that controllerFor is supported, it is unclear then as to exactly what versions are affected.
When the same sample is used in multiple tests, the title for the app (chrome / notepad) may be identical. The tests use the app title to determine when the test sample has opened. When the titles are not unique, the test may start with the app already in an unexpected state, it may also get interrupted by the new app instance opening. Description of development approach Hash the combined test start timestamp with sample contents to create a unique title. - Notepad tests are *.txt files, the hash is used in the filename (exposed by notepad in the app title). - Chrome tests embed the timestamp in an HTML comment.
Revert "In Hindi, NVDA will not read anymore punctuation symbols whatever the punctuation level"
Merge beta to master
The WTS_INFO_CLASS enum as defined in NVDA contained a WTSQuerySessionInformation value, which shouldn't be part of the actual enum according to The docs Also when calling WTSQuerySessionInformation, ctypes.pointer was used instead of ctypes.byref to pass values by reference. Description of user facing changes None Description of development approach Removed the entry and fixed the numbering. Use byref instead of pointer Testing strategy: Tested something like this in a remote session: winAPI._wtsApi32.WTSQuerySessionInformation(winAPI._wtsApi32.WTS_CURRENT_SERVER_HANDLE, winAPI._wtsApi32.WTS_CURRENT_SESSION, 29, byref(ppBuffer), byref(pBytesReturned))
Closes #14475 Follow up for #14416 Summary of the issue: #14416 added a log message at exception level. This log message is for when the relative z-order for an NVDAObject and the lock screen cannot be determined. While a noisy exception here is useful for alpha/beta testing of this code, this log message is almost always triggered once when locking windows. This is because the lock screen may not exist while windows is in the process of locking. Description of user facing changes Lower log level
Fix up minor issues with the change log for 2023.1 Fixes typo in "Ribbon" Restructures sentence on new Excel feature to be more clear (I had trouble understanding it when fixing the typo) Fixes list bullet indentation (2 spaces) Adds missing list bullet terminator
Closes #14281 Closes #14241 Addresses #13875 (comment) Summary of the issue: Janitorial update of eSpeak. Removes a workaround added to handle a bug with eSpeaks BreakCommand implementation, tracked in espeak-ng/espeak-ng#1232, #13875 (comment) Description of user facing changes eSpeak is updated. Fixes pronunciation of large numbers (#14241). Description of development approach Dropped strength for eSpeak BreakCommand attribute per espeak-ng/espeak-ng#1232 being fixed in eSpeak.
_TrackNVDAInitialization was created on rc before NVDAState was created, while NVDAState had been implemented for beta/alpha. As such, it was flagged to be moved once 2022.3.3 was completed.
…14486) postSessionLockStateChanged was named incorrectly, the convention would be to name it post_sessionLockStateChanged. Description of user facing changes None Description of development approach Deprecates postSessionLockStateChanged in favour of post_sessionLockStateChanged.
#14416 deprecated several functions for removal from winAPI.sessionTracking. This was released in 2022.3.3, and scheduled for removal in 2023.1
Summary of the issue: NVDA can only detect the lock screen windows, and windows below the lock screen, if NVDA is installed. When running a portable copy, or NVDA from source, locking NVDA causes an error every cache cycle due to the lock screen not being detected. Description of user facing changes logging/error sounds are suppressed when locking Windows and using a portable or source copy of NVDA Description of development approach Lock screen z-order is only checked if the current running version of NVDA is installed.
Closes #14508 Summary of the issue: Browse mode is enabled in Windows 11 clipboard history when it should not be. Description of user facing changes Users will be able to tab through various parts of Windows 11 lipboard history, specificlaly to access menu items such as pinning and unpinning items. Description of development approach "Disable browse mode" flag is set to True in emoji panel app module.
Fixup of #14487 Summary of the issue: NVDA can only detect the lock screen windows, and windows below the lock screen, if NVDA has UI Access. When running a portable copy, or NVDA from source, locking NVDA causes an error every cache cycle due to the lock screen not being detected. #14487 checked installation status., but checking UIAccess is a more accurate approach. Description of user facing changes logging/error sounds are suppressed when locking Windows and using a portable or source copy of NVDA Description of development approach Lock screen z-order is only checked if the current running version of NVDA has UIAccess (e.g. is installed normally).
Supersedes #14389 and #14426. Fixes #14360 Summary of the issue: Before this PR, NVDA was only aware of the first annotation target. NVDA announces the presence of an annotation target. nvda+d is used to announce the summary of the first annotation target. This PR introduces base code to support multiple annotation targets, and enables cycling though reporting each summary. Similarly, #14507 introduces reporting the presence of multiple annotation targets. Description of user facing changes nvda+d now cycles through reporting each annotation target for an annotated item. For example reading the summary of each child comment. Description of development approach Creates abstractions for the relationships between annotation origins and targets. The global command to report a summary of an annotation target has been updated.
Stacked against #14480 Supersedes #14426 Summary of the issue: Currently, NVDA only announces the first annotation target, and only announces the first annotation summary. #14480 introduces the ability to cycle through multiple annotations targets. This PR introduces announcing the presence of multiple annotation targets. When multiple annotation targets are present with different roles, NVDA should announce them. Example: A footnote, a comment, and a no-role annotation are present NVDA should announce "has footnote, has comment, has details" to make it easier for the user to find the annotation they want to interact with. Description of user facing changes When the annotation feature is enabled, NVDA will now report all the unique annotation target roles. Description of development approach From the virtual buffer, exposed comma separated values for the roles of annotation targets via the "detailsRoles" property. Converted all aria-details functions to plural form (handling a collection rather than a single optional value). Removed usages of, and deprecated nvdaObject.hasDetails, nvdaObject.detailsSummary, nvdaObject.detailsRole These are replaced with new Annotations types
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Must be merge commit not squash merge