nvda
92c79c3a - NVDAObjects.UIA: do not cancel say all when handling high priority UIA notification (#18218)

Commit
1 year ago
NVDAObjects.UIA: do not cancel say all when handling high priority UIA notification (#18218) Closes #17986 Summary of the issue: While say all is in progress, NVDA interrupts speech while handling a high priority UIA notification. This was observed in Microsoft Edge where say all is active while notifications such as "loading complete" is announced. Description of user facing changes: In Microsoft Edge, NVDA will no longer cancel say all when announcing notifications such as "loading complete". Description of developer facing changes: Changes to NVDAObjects.UIA's notification event handler: * Speech priority flag is prepared as it will become either None or NOW (speak immediately) depending on the condition below. * Set speech priority to NOW if say all is in progress, otherwise cancel speech. * UIA notification display string will be reported immediately during say all (and thus not interrupting say all). Description of development approach: First tested as part of Windows App Essentials add-on/global plugin portion, then ported to NVDA Core and tested manually (below). Testing strategy: Manual testing: 1. Run Microsoft Edge. 2. Visit a website known to take a long time to load. 3. NVDA should start say all if "automatic say all on page load" is enabled, otherwise do a manual say all (NVDA+down arrow (desktop)/NVDA+A (laptop)). 4. Observe that: Before: NVDA interrupts speech when notifications such as "loading page/still loading/loading complete" are announced. With the PR: NVDA will continue performing say all after announcing UIA notification display string. Known issues with pull request: When a page is refreshed and say all is initiated and notifications are reported, NVDA may play error tones (due to null pointer being passed into code injection routine). This does not impact say all.
Author
Parents
Loading