nvda
70b88d07 - Support NetUI controls in Excel (#20979)

Commit
18 days ago
Support NetUI controls in Excel (#20979) ### Summary of the issue: When focusing the dynamic action button ("Chat with Copilot") in Microsoft Excel with UIA disabled, NVDA doesn't recognise that the focus has moved. ### Description of user facing changes: The "Chat with Copilot" button in Excel is now accessible with NVDA. ### Description of developer facing changes: None. ### Description of development approach: The Copilot DAB is a `NetUIElement`, which is only accessible via UIA. It has no window handle and no MSAA/IAccessible support. The cause here is the same as in #12982. Thus, I've extended the approach taken in #12988 to also apply in Excel. `UIAHandler.UIAHandler._isNetUIEmbeddedInWordDoc`: * Also accept the window class name "EXCEL7", which has been extracted into its own internal-only constant * Renamed to `_isNetUIEmbeddedInMSOffice` to better reflect its expanded purpose * The same rename was applied to the cache property `UIAHandler.UIAHandler._emitMSAAFocusForWordDocIfNecessary`: * as well as class name "_WwG" and control type Document, also accept "XLSpreadsheetCell" and DataItem * Renamed to `_emitMSAAFocusForMSOfficeIfNecessary` to better reflect its expanded purpose * Explicitly request an immediate core pump, as otherwise there may be a several second delay before the focus event is processed if nothing else causes one Also tidied the imports in `source/UIAHandler/__init__.py`. It still has a wildcard import from `comInterfaces.UIAutomationClient`, but removing it would have involved changing hundreds of lines of code across tens of files. I created #20985 to track removing the wildcard import. ### Testing strategy: Running from source with * Microsoft® Word for Microsoft 365 MSO (Version 2609 Build 16.0.20430.20032) 64-bit * Microsoft® Excel® for Microsoft 365 MSO (Version 2609 Build 16.0.20430.20032) 64-bit Tests: * [x] Excel via object model: * [x] With focus in in the worksheet, press `F6` to reach the DAB. Verify that it is announced and can be activated with `Space`/`Enter`. * [x] Press `Shift+F6` to return to the worksheet. Verify that the change in focus is announced and interaction with the sheet works correctly. * [x] Excel with UIA: * [x] Regression test: same as the object model tests. This already worked correctly. * [x] Word via object model: * In a document with comments: * [x] With focus in the document, press `Alt+F12` to jump to the comments side track. Verify that the change in focus is reported and navigation works correctly. * [x] Press `Esc` to return to editing the document. Verify that the change in focus is reported and interaction works correctly. * [x] Word via UIA: * [x] Same as object model tests. ### Known issues with pull request: None known
Author
Parents
Loading