Browse Source

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>)
config
Quentin Rameau 9 years ago
committed by Hiltjo Posthuma
parent
commit
dce4fb3737
1 changed files with 2 additions and 2 deletions
  1. +2
    -2
      dwm.c

+ 2
- 2
dwm.c View File

@ -1441,7 +1441,7 @@ setfocus(Client *c) {
void void
setfullscreen(Client *c, Bool fullscreen) { setfullscreen(Client *c, Bool fullscreen) {
if(fullscreen) {
if(fullscreen && !c->isfullscreen) {
XChangeProperty(dpy, c->win, netatom[NetWMState], XA_ATOM, 32, XChangeProperty(dpy, c->win, netatom[NetWMState], XA_ATOM, 32,
PropModeReplace, (unsigned char*)&netatom[NetWMFullscreen], 1); PropModeReplace, (unsigned char*)&netatom[NetWMFullscreen], 1);
c->isfullscreen = True; 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); resizeclient(c, c->mon->mx, c->mon->my, c->mon->mw, c->mon->mh);
XRaiseWindow(dpy, c->win); XRaiseWindow(dpy, c->win);
} }
else {
else if(!fullscreen && c->isfullscreen){
XChangeProperty(dpy, c->win, netatom[NetWMState], XA_ATOM, 32, XChangeProperty(dpy, c->win, netatom[NetWMState], XA_ATOM, 32,
PropModeReplace, (unsigned char*)0, 0); PropModeReplace, (unsigned char*)0, 0);
c->isfullscreen = False; c->isfullscreen = False;


Loading…
Cancel
Save