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>)
This commit is contained in:
parent
646b351cc7
commit
dce4fb3737
4
dwm.c
4
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;
|
||||
|
|
Loading…
Reference in New Issue