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
|
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…
Reference in New Issue
Block a user