On Fri, Mar 18, 2022, at 6:19 PM, Chris Down wrote:
> Hey folks,
>
> This patch causes a regression for GPG's default pinentry. Previously the
> window floats as it is supposed to, but now it doesn't float at all.
>
> To reproduce, you can clear your agent credentials with `gpg-connect-agent <<<
> RELOADAGENT`, and then request decryption. Attached are examples before and
> after this patch using the default GTK pinentry.
>
> Thanks,
>
> Chris
>
> Attachments:
> * before.png
> * after.png
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?).
Here's the relevant bit on transient windows from ICCCM (via
https://tronche.com/gui/x/icccm/sec-4.html):
"The WM_TRANSIENT_FOR property (of type WINDOW) contains the ID of
another top-level window. The implication is that this window is a pop-up
on behalf of the named window, and window managers may decide not to
decorate transient windows or may treat them differently in other ways. In
particular, window managers should present newly mapped WM_TRANSIENT_FOR
windows without requiring any user interaction, even if mapping top-level
windows normally does require interaction. Dialogue boxes, for example,
are an example of windows that should have WM_TRANSIENT_FOR set."
Received on Sat Mar 19 2022 - 03:06:52 CET