Hi Miles,
Miles Alan writes:
Interesting - thanks for reporting. I'd be curious what WM_TRANSIENT_FOR
is set to in pinentry's case. The case I'm trying to address is resizable
SDL applications which, as mentioned earlier, wholesale set WM_TRANSIENT_FOR
to the root window. I'm not sure on the correct behavior / if this patch
is correct or not. Essentially this patch changes things so that if
WM_TRANSIENT_FOR is an invalid window (doesn't map to a client), then
the window won't be treated as floating (as is it really "transient"
in that case.. vs just being a separate top-level window?).
WM_TRANSIENT_FOR is set to the root window in the pinentry's case:
% xprop | grep TRANSIENT
WM_TRANSIENT_FOR(WINDOW): window id # 0x523
% xwininfo -root -tree | grep 0x523
xwininfo: Window id: 0x523 (the root window) (has no name)
Root window id: 0x523 (the root window) (has no name)
I see the following practical text in wm-spec related to this[0]:
If the WM_TRANSIENT_FOR property is set to None or Root window, the window
should be treated as a transient for all other windows in the same group. It
has been noted that this is a slight ICCCM violation, but as this behavior is
pretty standard for many toolkits and window managers, and is extremely
unlikely to break anything, it seems reasonable to document it as standard.
0:
https://specifications.freedesktop.org/wm-spec/wm-spec-latest.html#idm45623487728576