[hackers] Re: [dwm][PATCH v3] manage: For isfloating/oldstate check/set, ensure trans client actually exists

From: Miles Alan <m_AT_milesalan.com>
Date: Tue, 08 Mar 2022 12:56:27 -0500

On Mon, Feb 21, 2022, at 1:10 AM, m_AT_milesalan.com wrote:
> From: Miles Alan <m_AT_milesalan.com>
>
> In certain instances trans may be set to a window that doesn't actually
> map to a client via wintoclient; in this case it doesn't make sense
> to set isfloating/oldstate since trans is essentially invalid in that
> case / correlates to the above condition check where trans is set /
> XGetTransientForHint is called.
> ---
> dwm.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/dwm.c b/dwm.c
> index a96f33c..254ebf2 100644
> --- a/dwm.c
> +++ b/dwm.c
> _AT_@ -1063,7 +1063,7 @@ manage(Window w, XWindowAttributes *wa)
> XSelectInput(dpy, w,
> EnterWindowMask|FocusChangeMask|PropertyChangeMask|StructureNotifyMask);
> grabbuttons(c, 0);
> if (!c->isfloating)
> - c->isfloating = c->oldstate = trans != None || c->isfixed;
> + c->isfloating = c->oldstate = t || c->isfixed;
> if (c->isfloating)
> XRaiseWindow(dpy, c->win);
> attach(c);
> --
> 2.34.1

You can test this patch with SDL applications which hit this edge case
by default. Logic in dwm currently forces windows to become floating in
this edge case.

For example with the SDL games "rue" and "cdogs_sdl" on alpine, in i3wm
these applications open as tiled windows by default as they should; while
in dwm they open as floating windows due to this bug.

This patch resolves that and SDL applications open as tiled with default
flags as they should.
Received on Tue Mar 08 2022 - 18:56:27 CET

This archive was generated by hypermail 2.3.0 : Tue Mar 08 2022 - 19:36:41 CET