manage: For isfloating/oldstate check/set, ensure trans client actually exists
authorMiles Alan <m@milesalan.com>
Mon, 21 Feb 2022 06:10:56 +0000 (01:10 -0500)
committerHiltjo Posthuma <hiltjo@codemadness.org>
Sun, 13 Mar 2022 16:32:56 +0000 (17:32 +0100)
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

diff --git a/dwm.c b/dwm.c
index 1ee4ea29259b5bcc1c3cb2f22a0688424b0b54ce..5f16260aeb438ca9fa0a86eb6eb23ccab304e0b4 100644 (file)
--- a/dwm.c
+++ b/dwm.c
@@ -1064,7 +1064,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);