First pass at handling menus in wine.

This commit is contained in:
Storm Dragon committed 2026-10-09 15:45:18 -04:00
1 parent cc6523e6fd
commit 0992ffee0d
9 files changed
+520 -18

No files matched your search

+33
View File
@@ -0,0 +1,33 @@
# Menu bridge integration
Build the project, then run `python3 tests/menu_integration.py --build-dir build`
from the repository root in a graphical session. Dependencies are Wine,
MinGW's x86_64 C compiler, PyGObject, and `dbus-run-session`.
The test creates a temporary Wine prefix and a private D-Bus service. Its
64-bit PE application exercises the separately running Winelib helper's
global menu hook, rather than calling helper functions inside the fixture.
The test processes carry the managed-helper marker so the running Cthulhu
supervisor does not start an additional helper in the test prefix.
Checks include actual keyboard navigation through File/Edit menus, a nested
submenu and a context menu; displayed command shortcuts; checked and disabled
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 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.
For live acceptance, rebuild/install the package and restart Cthulhu so it
launches the updated helper. In a 64-bit Wine application, use Alt to reach
File/Edit, arrows to move through commands and submenus, Escape to return, and
Shift+F10 for a context menu where supported. Verify speech and braille contain
the highlighted label, role, displayed shortcut, and checked/unavailable state,
and that normal control reading resumes afterward. Test multiple Wine prefixes
and reader shutdown separately. Automated event recording does not establish
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.