Conversation
NVDA's existing audio output code (nvwave) is largely very old and uses WinMM, a very old legacy Windows audio API. It is also written in pure Python, contains quite a few threading locks necessitated by WinMM, and parts of it have become rather difficult to reason about. There are several known stability and audio glitching issues that are difficult to solve with the existing code. Description of user facing changes At the very least, this fixes audio glitches at the end of some utterances as described in #10185 and #11061. I haven't noticed a significant improvement in responsiveness on my system, but my system is also very powerful. It's hard to know whether the stability issues (e.g. #11169) are fixed or not. Time will tell as I run with this more. Description of development approach 1. The bulk of the WASAPI implementation is written in C++. The WASAPI interfaces are easy to access in C++ and difficult to access in Python. In addition, this allows for the best possible performance, given that we regularly and continually stream audio data. 2. The WinMM code fired callbacks by waiting for the previous chunk to finish playing before sending the next chunk, which could result in buffer underruns (glitches) if callbacks were close together (Python 3 versions of NVDA produce a scratch in the speech when finishing the end of a line #10185 and Texts with multiple line spacings are voiced with NVDA + down arrow and voices crack #11061). In contrast, the WASAPI code uses the audio playback clock to fire callbacks independent of data buffering, eliminating glitches caused by callbacks. 3. The WinMM WavePlayer class is renamed to WinmmWavePlayer. The WASAPI version is called WasapiWavePlayer. Rather than having a common base class, this relies on duck-typing. I figured it didn't make sense to have a base class given that WasapiWavePlayer will likely replace WinmmWavePlayer altogether at some point. 4. WavePlayer is set to one of these two classes during initialisation based on a new advanced configuration setting. WASAPI defaults to disabled. 5. WasapiWavePlayer.feed can take a ctypes pointer and size instead of a Python bytes object. This avoids the overhead of additional memory copying and Python objects in cases where we are given a direct pointer to memory anyway, which is true for most (if not all) speech synthesisers. 6. For compatibility, WinmmWavePlayer.feed supports a ctypes pointer as well, but it just converts it to a Python bytes object. 7. eSpeak and oneCore have been updated to pass a ctypes pointer to WavePlayer.feed. 8. When playWaveFile is used asynchronously, it now feeds audio on the background thread, rather than calling feed on the current thread. This is necessary because the WASAPI code blocks once the buffer (400 ms) is full, rather than having variable sized buffers. Even with the WinMM code, playWaveFile code could block for a short time (nvwave.playWaveFile not fully async #10413). This should improve that also. 9. WasapiWavePlayer supports associating a stream with a specific audio session, which allows that session to be separately configurable in the system Volume Mixer. NVDA tones and wave files have been split into a separate "NVDA sounds" session. WinmmWavePlayer has a new setSessionVolume method that can be used to set the volume of a session. This at least partially addresses Ability to adjust volume of sounds #1409.
Fixes #13187 Summary of the issue: After having modified a parameter in a profile and then reset it to its original value with NVDA+control+C, it was not possible to save the configuration with NVDA+control+R; NVDA was complaining that the file system was probably read-only. Description of user facing changes NVDA will no longer refuse to save the configuration after a configuration reset. Description of development approach Bugfix: when resetting the config, config.conf._dirtyProfiles is cleared I have also narrowed the exception filtering when saving the config since in #13187, we get a message related to file write error, whereas the real error had nothing to do with it: it was a KeyError when trying to find "notepad" in config.conf._profileCache. I have filtered on PermissionError which is the error that I get when I set nvda.ini (or the whole NVDA setting folder) as read-only and try to save the config.
Summary of the issue: I'm still seeing access violations in the IoThread here and there, same for @bramd. I really want to track these down! We need to handle those more gracefully anyway. Description of user facing changes Better logging Description of development approach De run block of the IOThread is now wrapped in a try/except that logs the stack. I hope the stack will give us more info about what's going wrong here.
…ely instead of after a delay. (#14701)" (#14925) This reverts pr #14701, commit cc8b5ad Link to issue number: Fixes #14753 May fix #14803 Summary of the issue: After the merging of pr #14701, It was reported in #14753 that with input help mode on and moving your finger around the touch screen, many errors would be logged and eventually input help mode would be disabled. The recursion itself was caused by the core pump's Notify method calling request directly, which itself calls Notify. The obvious fix would be to wx.CallAfter the call to request. However, this then caused the WX event loop to fill up with responses to these call afters, and due to the way the wx event loop works (msgWaitForMultipleObjects waiting on a pending event win32 event), the event loop never ended up getting a chance to process OS and 3rd party messages. And because we monkeypatch CallAfter to PostMessage (in case we are in a win32 modal or menu and don't wake up) the win32 message queue was being filled completely thus not allowing future messages to be posted. @jcsteh and I have considered several different ways of trying to work around this. Most of which have not been successful. There are probably more things we could try, but for now it is better to revert until we can get this right. Description of development approach Fully reverts pr #14701 for now.
…n Excel (#14923) In Excel, when applying formatting to cells, nothing is reported. Instead, in Word, toggling bold, italic or underline is reported. Description of user facing changes When using Excel shortcuts to toggle the format of a full cell in Excel, the result is now reported. The following toggle are supported: • bold: control+b or control+shift+2 • italic: control+I or control+shift+3 • underline: control+U or control+shift+4 • strikethrough: control+shift+5 (Note: did not find any other shortcut for it) Description of development approach • As done for Word text, use object model to look at the properties of the cell after the shortcut is executed. • Copied the polling function of Word's code to check for value changes polling the object model. (I had initially thought that it was not required, but testing on another system, I have found that it was required) • Implement the scripts on the whole worksheet so that the scripts work either on single cell or on multi-cell selections. Taking advantage that both excelCellObject and excelRangeObject have a font attribute.
…tive typographic quotes (#14940) Fixes #14939 Summary of the issue: When the symbol level is set to none, left double angle bracket and right double angle bracket are read, which should not be the case. Description of user facing changes The left double angle bracket and right double angle bracket symbols are no longer read, when the symbol level is set to none and speech synthesizers will properly react on these symbols. Description of development approach This needed just the change of the english symbols.dic file. It should propagate all locales and languages. It overwrites erroneous definition in dldr.dic for all locales.
Follow-up of nvaccess/nvda-cldr#5 Summary of the issue: NVDA's CLDR data need to be updated regularly to follow CLDR releases. CLDR 43 was released on April 12th, 2023. Description of user facing changes CLDR character names updated, especially in translations. Description of development approach In nvda-cldr repo, checked out the commit e3af0878691391cc019d2e1e7965aa5756ac653a which is the one pointed by the branch main-out. This commit was created following the merge of nvaccess/nvda-cldr#5
…ry version of NVDA (launcher) (#14914) Summary of the issue: When running NVDA temp version (from launcher), the configuration cannot be save due to possible compatibility of version scheme. When pressing NVDA+control+C, the configuration is not saved and a message is logged in the log. However, NVDA reports "Configuration saved". Description of user facing changes When running the temporary version of the launcher: NVDA will not report erroneously that the config was saved when trying to save it with NVDA+control+C command. NVDA will also not offer anymore the possibility to save the configuration in the NVDA menu. Description of development approach As when running in secure mode: When trying to save the config, use the decorator to block action and report that the config cannot be saved in this version of NVDA. Also removed the "Save configuration" item in the NVDA menu when running the temp version (launcher)
Fixes #14927 Summary of the issue: The issue asked that Ctrl+Tab and Shift+Ctrl+Tab be listed in the user guide section regarding the settings dialog, since many users don't know they can use those to move between categories. Description of user facing changes While editing the section, I found some awkward and seemingly redundant wording, and some unclear portions. Reworded the initial paragraph to be more clear about categories and settings. Added a note that Ctrl+Tab and Shift+Ctrl+Tab can move between settings categories. Clarified a sentence about what shortcut keys for categories do. Made the note about adding shortcut keys for categories more clear. As it was written previously, it implied that adding shortcut keys might be the ONLY way to access those categories.
Closes #14742 Summary of the issue: Currently, NVDA+F12 does not include seconds when reporting time. In some online shopping malls merchants often have limited-time promotions, For example, "3 minutes and 59 seconds left" to start flash sale. It might help if the visually impaired could get the seconds of the current time in a more accurate way. Description of user facing changes NVDA does not control the format of the reported time, it is determined by the user's system settings, specifically, NVDA will refer to the 'Long time' option in the system settings. In the latest Windows 11 operating system, Microsoft allows users to choose whether to display seconds on the system clock. For Windows 10 and older operating systems, users can choose whether to display seconds on the system clock by changing the registry. If the user has allowed seconds to be displayed on the system clock, then NVDA +F12 will also include the seconds.
…r guide section "The NVDA Menu" (#14936) Fixes #14929 Summary of the issue: Some users do not know that Shift+F10 is an alternative to the Applications key for accessing the Context menu. As a good reason to provide this information in the user guide, make note of it in the first place which describes use of the Applications key: accessing the NVDA menu. Description of user facing changes Altered the user guide section in question as follows: Since there were several ways listed to access the NVDA menu already, and Clarify "applications key" and how to access the context menu in the user guide #14929 asked to add another one: put all the methods in a list. Described the Shift+F10 alternative to the Applications key. Added code markers around all keys in that section, except "Windows logo key+B", which is written differently. Moved the right-click mouse option to last, since it is the least likely for a blind user.
Summary of the issue: Help Tech Activator Braille display was not supported. Description of user facing changes Activator is now detected and can be used. Description of development approach Modified driver and detection logic.
An unbound gesture to c
Related to #14899, #14312, #14627 Fixes #14895 Summary of the issue: Despite several attempts to fix this, NVDA's IoThread can crash without a clear cause. Description of user facing changes Less crashes, most likely, as tests indicate that this is the case. Description of development approach As proposed by @jcsteh , rather than creating a new function pointer for every APC or completion routine call, use a single internal APC and completion routine and use an internal cache to store the python functions, not the actual APC functions.
Fixes #11698 Summary of the issue: Announcement of the status bar in LibreOffice (e.g. triggered by NVDA+End) didn't work because the default implementations do not work for the LibreOffice case. Description of user facing changes Announcement of the status bar (e.g. triggered by NVDA+End) works for LibreOffice. Description of development approach Override the default app module implementation to retrieve the status bar and announce its text in the LibreOffice app module, since the default implementations are not sufficient for the LibreOffice case: To retrieve the status bar object, locate the descendant with the corresponding role, but only descend into children of role ROOTPANE and WINDOW for performance reasons. To generate text from the status bar object, retrieve the text of each status bar child using the IAccessibleText interface. (The default implementation in api.py only uses the object names and values, which are both empty.)
Fixes #10807 Summary of the issue: When reported by speech, some shortcut key or combination cannot be understood correctly in the following cases: A punctuation may not be reported due to symbol level being too low, e.g. "alt+." reported as "alt plus" instead of "alt plus dot" in Outlook. A character reported as a word instead of being reported as a character. E.g. in French, the letter "à" (a grave) is a word; in MS Word, the shortcut "alt+à" is reported as "alt plus a" instead of "alt plus a grave". Same for "Y" which is a word in French and the name of the letter is "i grec" whereas the word just reads "i" ("ee"). Description of user facing changes 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 Generate a speech sequence to report shortcut keys from the shortcut key string provided by the API. This shortcut key string may contain one or two shortcuts. When there are two shortcuts, they are separated by two spaces. Each shortcut is split into its component keys. If a key is a punctuation, symbol reporting processing is used so that the punctuation can be reported no matter the punctuation level. If a key is a single character, CharacterModeCommand is passed to the synth so that the name of the letter is reported and not a possible one-letter word.
…#14932) Fixes #5641 Summary of the issue: In Windows 10 and later, NVDA does not announce virtual desktop names wen they are opened, switched, and closed. Description of user facing changes NVDA will announce names of virtual desktops when opening, switching, and closing them. Description of development approach Event handler is extended to include a virtual desktop switch handler and an extension to execute event to catch a name change event coming from CSRSS. --- commits: * Event handler: update copyright header. Re #5641 * Event handler/virtual desktops announcement: use a dedicated function to handle possible virtual desktop switches. Re #5641. Original work by Jamie Teh (Mozilla): define a dedicated function to handle posible (and real) Windows 10/11 virtual desktop switche announcements. This function checks to make sure this is Widows 10 or later, and if yes, announces desktop name as defined in the event handler module, and clears this string once announcements are done. The actual event responsible for placing virtual desktop name in event handler is name change event from CSRSS (client/server runtime subsystem/Windows subsystem) process, specificlaly desktop object. Handling name change event will be done as part of handling gain focus event, specifically when doing pre-gain focus routine. * Event handler/virtual desktop switch announcements: detect name change event coming from CSRSS/desktop object and treat as a possible virtual desktop switch. Re #5641. Original idea from Jamie Teh (Mozilla): in 'execute event' function, detect namechange coming from CSRSS/desktop object and treat it as a possible virtual desktop name change before handling focus events. If it turns out this is indeed a virtual desktop switch, set virtual desktop name, then queue handle possible virtual desktop switch routine (250 milliseconds) so desktop switches can be announced when opening/closing/switching virtual desktops while focused on the desktop. * Event handler/virtual desktop switch announcements: handle possible virtual desktop switches after handling new foreground event. Re #5641. Credit: Jamie Teh (Mozilla): handle possible virtual desktop switch announcements after handling new foreground announcement in 'do pre gain focus' routine. This allows virtual desktop names to be announced between actual desktop switch and handling gain focus event, more noticeable when creating new virtual desktops. * Event handler/virtual desktop switch announcement: limit announcement to Windows 10 Version 1903 and later. Re #5641. A note from Jamie Teh (Mozila): virtual desktop switch announcement works more effectively in Windows 10 Version 1903 (May 2019 Update) and later, therefore restrict virtual desktop announcement to that feature update and later. * Event handler/virtual desktop switch announcement and surrounding code: lint * Event handler/virtual desktop switch announcement: use formatted string literals when logging exceptions with execute event routine. * Event handler/virtual desktop switch announcement: add typing info for virtual desktop name field and handle possible desktop switch function. Re #5641 * Event handler/virtual desktop switch announcement: use a dedicated variable to detect Windows 10 1903 and later. Re #5641. In addition to placing winVersion module import at the top of the file, use a dedicated flag to indicate support for virtual desktop switch announcements in Windows 10 Version 1903 (May 2019 Update) and later. * Event handler: move virtual desktop constants to the top of the file. Reported by several testers: in some cases, NVDA fails to start due to type hint scope issue if a constant is placed between functions. Therefore, move virtual desktops handling to top fo the file next to other constants and data structures. * Event handler: lint (Flake8 ET126) * Event handler/virtual desktop announcements: make virtual desktop name and announcement check variables private. Re #5641. Reviewed by Sean Budd (NV Access): make virtual desktop name and can nanouncement virtual desktop name variables private - at the moment no add-on appears to need this functionality but this can change if requested by add-on authors. * update changes --------- Co-authored-by: Sean Budd <sean@nvaccess.org>
Summary of the issue: Historically, NVDA users have had to browse websites or use add-ons, not directly run/developed by NV Access, in order to learn about, download, and install add-ons. For a long time, easier manual updates for add-ons, and automatic updates for add-ons has been desired by NVDA users. Additionally, with the more common and structured approach to add-on API compatibility breaks, lowering the friction for delivery of updated (and compatible) add-ons is more important than ever. User stories enabled by this work: As an NVDA user, I want to easily browse add-ons which are compatible with my version of NVDA, to learn if they may fulfill an unmeet user need. As an NVDA user, I want to be able to install compatible NVDA add-ons that I have determined will fulfill an unmet user need. Additionally, this work unblocks the following user stories which may yet be incorporated into this PR: As an NVDA user, I want to be notified when there are updates to add-ons I have installed, so that I can manually update the add-ons when I am ready to do so. As an NVDA user, I want NVDA to automatically keep add-ons up to date with the latest version available. When NVDA notifies of an update (to NVDA), I want to be able to check the compatibility status of the add-ons I have installed, so that I can determine whether the NVDA update will break my core requirements. Description of changes for the user: A new dialog is introduced (NVDA menu, tools, addon store) which shows the latest versions of add-ons (submitted to the add-on store). The list of functionality for the add-on store is expansive. This should be covered in the user guide and manual test plan
Bumps [requests](https://github.com/psf/requests) from 2.28.2 to 2.31.0. - [Release notes](https://github.com/psf/requests/releases) - [Changelog](https://github.com/psf/requests/blob/main/HISTORY.md) - [Commits](psf/requests@v2.28.2...v2.31.0) --- updated-dependencies: - dependency-name: requests dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Summary of the issue:
The b.note "VID_28AC&PID_0012"/"VID_28AC&PID_0013" is not detected automatically
The b.book "VID_28AC&PID_0020"/"VID_28AC&PID_0021" is not detected automatically
the b.note joystick1Left/joystick1Right should do the action "braille_scrollBack/Forward" instead of "review_next/previousCharacter"
when connected to a b.note/b.book, a message should be send to the braille display with the format {"S", "n", "NVDA/XX"}, where "XX" is the number of the COM-port. A {"S", "n" ""} message should be sent when disconnecting.
Description of user facing changes
NVDA automatically detects the b.note and b.book
some gestures changed when a b.note is connected
Description of development approach
I have added the PD/VID for the b.note and b.book to bdDetect.py for automatic detection.
In the existing eurobraille.py display driver I have added the "deviceType" for the b.note and b.book
In the existing eurobraille.py, when a b.note is connected, another gesture map is used than the default one for the change in joystick1Left/joystick1Right.
I have changed the name to "eurobraille Displays"
In the existing eurobraille.py, when a device is connected and is confirmed to be a b.note or b.book, NVDA sends a identifier for the connection. When NVDA terminates it sends an empty message to reset this identifier to the display.
Part of #13985 Summary of the issue: After reading the proposed add-on store user guide sections, I thought they could be more user friendly. The current form appeared to assume more knowledge than the user may have. Description of user facing changes The following summarizes the changes I made to each section. Add-on Store: Rewrote introductory section to better explain what add-ons are. Explained that it being a "store" does not mean users must pay. Browsing add-ons: Better explained the use case for alt+l. Explained what "selecting an add-on" means. Elaborated a bit more on actions. Add-on list views: Changed the sentence order to be more logical. Noted the possibility of view changing via arrow keys. Include incompatible add-ons: This heading was duplicated. Changed the first one to "Filtering for enabled or disabled add-ons". Filtering for enabled or disabled add-ons: Wrote a substantive introductory section, explaining enabled/disabled states. Include incompatible add-ons: Minor grammar. Filter add-ons by channel: Slightly more explanation for beta add-ons. Moved explanations before usage instructions. Search add-ons: Changed title to "Searching for add-ons". Added instructions on how to reach the search field. Removed the line "Add-ons can be filtered by display name, publisher and description.", because there are no instructions on how to do that. Expect to add back in later, after that part can be more easily explained. Add-on actions: Made the instructions more complete. Installing add-ons: Added an NV Access disclaimer at the top. I Used the word "vetted", because that has been used to describe NV Access accepting add-ons into the store, by some members in the community, and I wanted to make clear that they are not "vetted" in any way by NV Access. Slight clarifications. Removed a rogue space at the end of a line. Removing Add-ons: Minor word change to avoid proximate word repetition. Disabling and Enabling Add-ons: Changed "a status" to "the status", since the cases are specific. Incompatible Add-ons: Suggested grammar changes for better flow. Added potential reasons why a user may want to disable all add-ons.
Fix up of #14955 Raised in #14912 (comment) Summary of the issue: Caching directories are still created when NVDA should not write to disk Description of user facing changes Caching directories are no longer created when NVDA should not write to disk Description of development approach Caching directories are no longer created when NVDA should not write to disk
Summary of the issue: Liblouis 3.26.0 was released. Description of how this pull request fixes the issue: Updates to latest version.
…4967) Raised in #14912 (comment) Summary of the issue: When starting NVDA with add-ons disabled (e.g. through --disable-addons), enabled add-ons are not displayed in the add-on store. Description of user facing changes When NVDA starts with add-ons disabled: Add-on store now displays enabled add-ons A banner is shown to warn the user that add-ons are disabled Description of development approach Add a new state to differentiate between enabled and running, and enabled while not running.
…Guide (#14971) Summary of the issue: The Add-on Store subchapter was long enough to warrant a standalone chapter. Description of user facing changes Moved the store subchapter of "Extra Tools", to its own chapter before "Extra Tools". Consequently, reduced all headings by one numbering level. Renamed the new chapter from "Add-on Store", to "Add-ons and the Add-on Store". Added a stub under the tools menu "Add-on store" description in the "Extra Tools" chapter, pointing to the new chapter. Wrote a new introductory section, placing the description of add-ons first, and description of store second. Mostly based on what was there before, but more focused on the add-ons than the store at first. Includes proposed rewording of the non-free add-ons sentences.
Fixes #14983 Fixes #12200 Fixes #12108? Summary of the issue: Moving rapidly in Excel can result in lagging one cell behind when reporting focus. Description of user facing changes Rapid movement in Excel will now always report the last cell. Description of development approach First and foremost, NVDA was relying on the current focus object to cache the current selection in Excel rather than getting the current selection before executing the gesture. This resulted in the one behind behavior. There was logic to check for selection changes, but it detected a change based on the wrong old selection. I also revamped the logic a bit based on #14708, i.e. perform three attempts before doing a time.sleep.
…of free add-ons with paid components (#14982) Consideration of the language to use in the User Guide, when describing all add-ons as free in the store, while certain add-ons require the purchase of components or licenses in order to do anything. Description of user facing changes Revised language. Description of development approach Edited the language to be more in line with the comments in #14966. It may still not be as desired, but this provides a context to revise it in.
Fixes #14948 Summary of the issue: Selection is indicated with dots 7 and 8 which may cause difficulties for reading. Description of user facing changes There is feature flag setting "Show selection" in Braille category which default behavior is Enabled. There is also possibility to use input gesture to cycle setting. Description of development approach Feature flag (BoolFlag) showSelection which default behavior is Enabled. There is no display string for DEFAULT member. Simple helper function _featureFlagDefaultBehaviorDisplayString returns display string for ui.message when default value is cycled with input gesture.
…ead of after a delay. (#14928) Currently, everything in NVDA, including responding to keyboard input and focus changes, goes through the core pump. The core pump is always run with a slight delay. Assuming nothing else is already queued, any input or focus change will not be processed for a minimum of 10 ms. In reality, it's potentially longer due to the system timer resolution and the fact that timers are low priority messages. We should be aiming for the fastest possible response to user input and focus changes. Description of user facing changes NVDA will respond slightly faster to commands and focus changes. Description of development approach 1. The core pump has been refactored. ◦ Rather than using NonReEntrantTimer, it now uses wx.Timer directly and guards re-entry itself for better control. ◦ There is a method (queueRequest) which uses wx.CallAfter to execute the request on the main thread if necessary, avoiding recursion. However, if a delayed pump is requested on the main thread, starting the timer will happen there, rather than being queued via the window message. ◦ A main thread method triggered by wx.CallAfter (processRequest) manages scheduling/executing the pump to make state management easier. ◦ The pump always queues a subsequent request using wx.CallAfter rather than executing it directly to avoid recursion and to ensure that other window messages have a chance to execute. 2. requestPump has a new immediate argument which specifies whether the pump should happen as soon as possible or after the delay. Delayed pumps are still useful in most cases for rate limiting and filtering, so this defaults to False. 3. queueHandler.queueFunction has an _immediate argument which is passed to requestPump. It is _ prefixed to mitigate conflicts with keyword arguments intended for queued functions. 4. inputCore, scriptHandler, focus changes and live text output all request an immediate core pump. 5. As an exception, a gesture can set the private _immediate attribute to False to prevent immediate pumps. This is set on all touch hover gestures to avoid exhausting the window message queue, since hover gestures are queued every pump if there is an active hover.
…no name and no description should still be treated as content I.e. announced in focus ancestry. (#14878) NVDA filteres controls with a role of groupping out of being presented in the focus ancestry if they have no name or description. However, there is a trend with some newer Microsoft products to add position info to these unlabeled groupings (E.g. grouping 1 of 5) and it is requested that NvDA announce these as they provide very deliberate topology to the user. Description of user facing changes NVDA will now report unlabeled groupings that have useful position information, such as in recent versions of Microsoft Office 365 menus. Description of development approach NVDA.presentationType now treats groupings specifically, only changing them to layout if they have no name, no description, and no position information.
Fixes #14994 Summary of the issue: NVDA would be unable to install some add-ons via Windows Explorer or the install addon from external source button. Description of user facing changes The incompatible dialog now works correctly instead of playing an the NVDA error sound. Description of development approach The _addonStoreGui.controls.messageDialogs._shouldInstallWhenAddonTooOldDialog was being imported incorrectly which was causing the ModuleNotFoundError.
Issue similar to #14607. Summary of the issue: In the multi-category settings dialog, the panel takes the name of the corresponding category. This name is reported when tabbing from the category list to the panel. If the category name contains an ampersand, this character is not reported in the panel's name and it acts as an accelerator instead. This is the case for NVDA Dev & Test Toolbox add-on where the add-on's name is used as category in the multi-category settings dialog and thus also as panel name. Description of user facing changes The panel's name will match the category name, even in the case this name contains an ampersand (&) character. Description of development approach Double the ampersand in the panel's name.
… to INFORMATION (#14807) Summary of the issue: When the Searching for text function does not find the text, NVDA shows a MessageBox. Now the style of this MessageBox is ERROR. This pull request changes the style of this MessageBox to INFORMATION. This message is literally not an error. This is information. This change is proposed with the following considerations in mind: Messages with the ERROR style have a recognizable appearance and are accompanied by a system error sound. For users, such messages carry negative associations and cause unpleasant emotions. It seems that there is no need to scare users with an ERROR style message in cases of text not found, because this situation is not comparable to situations of real errors in the system. Other Windows applications do not use ERROR style messages in similar situations. For example, the standard Notepad application shows information about unfound text using messages in the INFORMATION style, and not ERROR. That is, this pull request brings NVDA closer to the unified Windows interface language. Description of user facing changes Message is displayed as information not error Description of development approach Changed message style, lint, add translator comments
#14896) Fixes #1409. Summary of the issue: Users would like to be able to control the volume of NVDA sounds. With the WASAPI implementation in #14697, it is possible to separately control the volume of NVDA sounds using the Windows Volume Mixer. However, it is often useful to link the volume of NVDA sounds to the volume of the voice. Description of user facing changes It is now possible to have the volume of NVDA sounds and beeps follow the volume setting of the voice you are using. This option can be enabled in Advanced settings. Description of development approach When this option is enabled and a WasapiWavePlayer is using soundsSession, the open() and stop() methods of WasapiWavePlayer set the session volume to the synth's voice volume. Note that we do this in stop() because some players keep the device open; e.g. tones.
Added some gestures. Description of user facing changes Added following gestures: | Cycle the braille show messages mode | f1+f2, f9+f10 | | Cycle the braille show selection state | f1+f5, f9+f14 |
Merge beta to master
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.
No description provided.