Enable cancellable speech by default#11266
Conversation
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
Many NVDAObjects derive from Window, including IAccessible. This meant that the fix for focus changes in Gmail was bypassed! Looking at the log, after opening NVDA Find dialog the last queued focus object is set to the following: - NVDAObjects.Dynamic_NvdaDialogDialogIAccessibleWindowNVDAObject - NVDAObjects.Dynamic_IAccessibleEditWindowNVDAObject The first is the dialog, the second the edit field. The full MRO for the dialog is: - class 'NVDAObjects.Dynamic_NvdaDialogDialogIAccessibleWindowNVDAObject' - class 'appModules.nvda.NvdaDialog' - class 'NVDAObjects.behaviors.Dialog' - class 'NVDAObjects.IAccessible.IAccessible' - class 'NVDAObjects.window.Window' - class 'NVDAObjects.NVDAObject' - class 'documentBase.TextContainerObject' - class 'baseObject.ScriptableObject' - class 'baseObject.AutoPropertyObject' - class 'garbageHandler.TrackedObject' - class 'object' Excluding speech cancellation on 'NVDAObjects.behaviors.Dialog' seems to generally make sense, resolves the NVDA Find dialog speech for focus cancellation, and does not appear to interfere with the Gmail fix.
To avoid window change speech from getting cancelled
Encapsulate logic in a class, clarify ownership of obj ref.
…nto makeCancellableSpeechDefault
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
|
@ramchaitanyap Could you please create a new issue for this? I have created a codepen to demonstrate this a little more clearly, see the full view and press the 'do focus changes button'. Although it should be noted this is not a regression due to this feature. It would be good to handle this case, I don't think it should prevent the feature from being turned on by default. There are other situations where this feature drastically improves things. |
|
@ramchaitanyap created the following related issue: #11840 |
This comment has been minimized.
This comment has been minimized.
|
This should also be blocked by #11736 . While it is theoretically possible that this is NVDA Remote's problem rather than an NVDA one we should not knowingly break add-ons that way especially not such popular ones as NVDA Remote. |
|
@lukaszgo1 Yes, this is unfortunate. Hopefully there is a simple fix we can apply on the NVDA side, otherwise we will defer the Cancellable speech by default change until the 2021.1 release. It should be noted that we don't believe we have broken any public add-on API with the Cancellable speech change, and if we do break the addon-API we expect add-on authors to help us to identify the breakage. Given the open and flexible nature of how NVDA add-ons interact with NVDA, we can only provide a best-effort approach with no strong guarantees. It is frustrating that NVDA Remote is written in a fragile way, relying on implementation details, and then maintenance falls on NV Access. The intention to make this option the default has been public for quite a while, and the option itself has existed for far longer. It seems NVDA Remote could be considered abandon-ware at this stage, it does not see active maintenance. Now would be a good time for someone new to take it on. The 2021.1 release will almost certainly break it. |
|
hi @feerrenrut |
This comment has been minimized.
This comment has been minimized.
|
It is appropriate to merge this within this release cycle, sooner rather than later, so that add-ons this affects can be updated. E.g. nvdaRemote. |
|
I think it might be clearer to have the change log read:
Keeps parity with initial cancellable speech change and puts user impact first (as main change log point). |
Link to issue number:
First introduced with "Cancellable speech #10885"
Several issues fixed with "Fix several issues in speech manager #11245"
Summary of the issue:
The experimental fix for rapid focus events was included but disabled by default in 2020.2, this PR enables it for broad testing during alpha for 2020.3.
Description of how this pull request fixes the issue:
Make 'Attempt to cancel speech for expired focus events' enabled by default.
Testing performed:
Known issues with pull request:
Cancelable speech: NVDA does not report tab titles when switching with ctrl+tab or ctrl+shift+tab #11397
If this causes problems for users, it can be manually disabled by setting "Attempt to cancel speech for expired focus events" to "No"
Change log entry:
Changes