The initial Slint problem was larger than thought. Hopefully a more universal fix.

This commit is contained in:
Storm Dragon committed 2026-11-01 15:48:33 -05:00
1 parent d0fdce7285
commit 1c12bc6636
10 files changed
+294 -6

No files matched your search

+30
View File
@@ -79,3 +79,33 @@ ready to replace the reader.
Preserve a fresh log if lag or a missing announcement remains, with the time
and the key or update that triggered it. Debug logs can contain private text.
## Window frame geometry
GTK can report the window manager's enclosing frame while X11's active client
reports only its content area. Slint/i3 exposed this as an active, showing
1916×994 accessible frame at (0,0) rejected against a 1912×974 client at (2,18).
Missing or stale `_NET_FRAME_EXTENTS` can make the advertised outer bounds
identical to those client bounds.
Foreground matching also accepts the actual immediate enclosing X11 frame.
It must contain the client, have bounded decoration edges, and contain no other
managed client. The desktop root, a parent that is itself a managed client,
and shared containers are excluded. Existing process, active/showing state,
iconification, foreground epoch and same-process sibling checks still apply.
This covers frame/client discrepancies across applications; arbitrary incorrect
AT-SPI geometry still requires diagnosis. Rejected activation diagnostics now
include `x_frame_bounds` alongside client and advertised outer bounds.
```sh
python3 tests/native_test_session.py env CTHULHU_NATIVE_FRAME_FOREGROUND=1 CTHULHU_NATIVE_GRAB_FOREGROUND=1 go test ./internal/platform/xorg -run '^TestNative(ReparentedFrameForeground|InputOnlyGrabForeground)$' -count=1 -v
```
The frame fixture covers missing, zero and stale extents, borders, moving,
resizing, switching to a sibling frame, shared containers and empty workspaces.
On Slint, listen while switching between two windows from one application,
another application's window, dialogs and menus. Move and resize them, switch
away to an empty workspace and return, and check preferences again. Confirm
speech and Braille follow the foreground control and background activity does
not take focus. Keep the first rejected activation from a fresh debug log if a
window remains silent; private X11 results do not prove affected-host acceptance.