From dce4fb373757727374d00c857ec0dfd225bbeafd Mon Sep 17 00:00:00 2001
From: Quentin Rameau <quinq+hackers@fifth.space>
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
<markus.teich@stusta.mhn.de>)
---
 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 v1.2.3