Initialize COM for application-owned Wine accessibility objects
This commit is contained in:
1 parent
25e38907d3
commit
6976c83294
4 files changed
+84
-3
No files matched your search
@@ -16,6 +16,12 @@ items; escaped ampersands; duplicate menu selections and reopening; restored
|
||||
button focus; and exiting with both reader capabilities disabled. Additional
|
||||
`WM_MENUSELECT` messages exercise duplicate notifications deterministically.
|
||||
|
||||
The menu fixture also returns an application-owned MSAA object through
|
||||
`WM_GETOBJECT`/`LresultFromObject`. The separate helper must retrieve its
|
||||
`client` role through COM; native text fallback cannot satisfy the check.
|
||||
This catches missing COM initialization that ordinary Wine control proxies
|
||||
and the native menu hook did not expose.
|
||||
|
||||
The fixture window takes focus and closes automatically. Cleanup stops only
|
||||
the Wine server for the temporary prefix. The recorded events never reach the
|
||||
running reader's speech or braille service.
|
||||
@@ -32,6 +38,35 @@ live listening or physical braille acceptance.
|
||||
32-bit hook support, entirely custom menus without `WM_MENUSELECT`, and full
|
||||
object review are outside the current implementation.
|
||||
|
||||
## BARD Express managed menus
|
||||
|
||||
The October 10 investigation found two independent blockers. The helper's
|
||||
message-loop thread did not initialize COM, so application-owned MSAA queries
|
||||
failed with `CO_E_NOTINITIALIZED` and used native window text such as `MenuBar`.
|
||||
The helper now initializes a single-threaded COM apartment before registering
|
||||
callbacks and uninitializes it after removing them. The new marshaled-provider
|
||||
check passes with the fix and fails with the previous helper.
|
||||
|
||||
BARD's prefix also registered `IAccessible` against UIA type library
|
||||
`{930299CE-9965-4DEC-B0F4-A54848D4B667}`, version `1.0`, while its installed
|
||||
`uiautomationcore.dll` lacked the registered resource `3`.
|
||||
An initialized read-only query failed with `TYPE_E_CANTLOADLIBRARY`.
|
||||
After backing up the prefix registry, the 32-bit and 64-bit
|
||||
`HKLM\Software\Classes\Interface\{618736E0-3C3D-11CF-810C-00AA00389B71}\TypeLib`
|
||||
registrations were pointed to the loadable standard accessibility type library
|
||||
`{1EA4DBF0-3C3B-11CF-810C-00AA00389B71}`, version `1.1`.
|
||||
Read-only inspection then retrieved Account/View/Help and their command labels,
|
||||
shortcuts and unavailable states from the open application. This repair is
|
||||
specific to a verified prefix mismatch; the helper does not change registries.
|
||||
|
||||
After installing the helper, restart Cthulhu to load it. In BARD, press Alt,
|
||||
move Left/Right among Account, View and Help, then Down/Up among commands.
|
||||
Check unavailable items while working offline and Escape back to the main
|
||||
screen. Recheck Tab/Shift+Tab through buttons, preferences and login fields,
|
||||
including password exclusion, and ordinary Wine Notepad menus/editing.
|
||||
Verify audible speech and physical braille separately; querying menu labels
|
||||
alone does not establish either output gate.
|
||||
|
||||
## Editor and actual Notepad checks
|
||||
|
||||
The CMake build also includes a small MSAA state decoder check. Run it with
|
||||
|
||||
Reference in new issue
Block a user