From dce4fb373757727374d00c857ec0dfd225bbeafd Mon Sep 17 00:00:00 2001 From: Quentin Rameau Date: Sat, 7 Nov 2015 14:09:08 +0100 Subject: setfullscreen: don't process the property twice Some clients try to set _NET_WM_STATE_FULLSCREEN even when the window is already in fullscreen. For example, c->oldstate was set two times in a raw and window would then always be floating. We must check that it's not the case before processing it. (original patch modified with suggestion from Markus Teich ) --- dwm.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dwm.c b/dwm.c index 96b43f7..3639165 100644 --- a/dwm.c +++ b/dwm.c @@ -1441,7 +1441,7 @@ setfocus(Client *c) { void setfullscreen(Client *c, Bool fullscreen) { - if(fullscreen) { + if(fullscreen && !c->isfullscreen) { XChangeProperty(dpy, c->win, netatom[NetWMState], XA_ATOM, 32, PropModeReplace, (unsigned char*)&netatom[NetWMFullscreen], 1); c->isfullscreen = True; @@ -1452,7 +1452,7 @@ setfullscreen(Client *c, Bool fullscreen) { resizeclient(c, c->mon->mx, c->mon->my, c->mon->mw, c->mon->mh); XRaiseWindow(dpy, c->win); } - else { + else if(!fullscreen && c->isfullscreen){ XChangeProperty(dpy, c->win, netatom[NetWMState], XA_ATOM, 32, PropModeReplace, (unsigned char*)0, 0); c->isfullscreen = False; -- cgit 1.4.1-2-gfad0