setfullscreen: don't process the property twice dce4fb37
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>)
Quentin Rameau · 2015-11-07 14:09 1 file(s) · +2 −2
dwm.c +2 −2
1441 1441
1442 1442
void
1443 1443
setfullscreen(Client *c, Bool fullscreen) {
1444 -
	if(fullscreen) {
1444 +
	if(fullscreen && !c->isfullscreen) {
1445 1445
		XChangeProperty(dpy, c->win, netatom[NetWMState], XA_ATOM, 32,
1446 1446
		                PropModeReplace, (unsigned char*)&netatom[NetWMFullscreen], 1);
1447 1447
		c->isfullscreen = True;
1452 1452
		resizeclient(c, c->mon->mx, c->mon->my, c->mon->mw, c->mon->mh);
1453 1453
		XRaiseWindow(dpy, c->win);
1454 1454
	}
1455 -
	else {
1455 +
	else if(!fullscreen && c->isfullscreen){
1456 1456
		XChangeProperty(dpy, c->win, netatom[NetWMState], XA_ATOM, 32,
1457 1457
		                PropModeReplace, (unsigned char*)0, 0);
1458 1458
		c->isfullscreen = False;