|
@ -218,7 +218,7 @@ static void togglefloating(const Arg *arg); |
|
|
static void toggletag(const Arg *arg); |
|
|
static void toggletag(const Arg *arg); |
|
|
static void toggleview(const Arg *arg); |
|
|
static void toggleview(const Arg *arg); |
|
|
static void unfocus(Client *c); |
|
|
static void unfocus(Client *c); |
|
|
static void unmanage(Client *c); |
|
|
|
|
|
|
|
|
static void unmanage(Client *c, Bool isdestroyed); |
|
|
static void unmapnotify(XEvent *e); |
|
|
static void unmapnotify(XEvent *e); |
|
|
static void updategeom(void); |
|
|
static void updategeom(void); |
|
|
static void updatebarpos(Monitor *m); |
|
|
static void updatebarpos(Monitor *m); |
|
@ -466,7 +466,7 @@ cleanup(void) { |
|
|
selmon->lt[selmon->sellt] = &foo; |
|
|
selmon->lt[selmon->sellt] = &foo; |
|
|
for(m = mons; m; m = m->next) |
|
|
for(m = mons; m; m = m->next) |
|
|
while(m->stack) |
|
|
while(m->stack) |
|
|
unmanage(m->stack); |
|
|
|
|
|
|
|
|
unmanage(m->stack, False); |
|
|
if(dc.font.set) |
|
|
if(dc.font.set) |
|
|
XFreeFontSet(dpy, dc.font.set); |
|
|
XFreeFontSet(dpy, dc.font.set); |
|
|
else |
|
|
else |
|
@ -595,7 +595,7 @@ destroynotify(XEvent *e) { |
|
|
XDestroyWindowEvent *ev = &e->xdestroywindow; |
|
|
XDestroyWindowEvent *ev = &e->xdestroywindow; |
|
|
|
|
|
|
|
|
if((c = wintoclient(ev->window))) |
|
|
if((c = wintoclient(ev->window))) |
|
|
unmanage(c); |
|
|
|
|
|
|
|
|
unmanage(c, True); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
void |
|
|
void |
|
@ -1626,24 +1626,25 @@ unfocus(Client *c) { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
void |
|
|
void |
|
|
unmanage(Client *c) { |
|
|
|
|
|
|
|
|
unmanage(Client *c, Bool isdestroyed) { |
|
|
XWindowChanges wc; |
|
|
XWindowChanges wc; |
|
|
|
|
|
|
|
|
wc.border_width = c->oldbw; |
|
|
|
|
|
/* The server grab construct avoids race conditions. */ |
|
|
/* The server grab construct avoids race conditions. */ |
|
|
XGrabServer(dpy); |
|
|
|
|
|
XSetErrorHandler(xerrordummy); |
|
|
|
|
|
XConfigureWindow(dpy, c->win, CWBorderWidth, &wc); /* restore border */ |
|
|
|
|
|
detach(c); |
|
|
detach(c); |
|
|
detachstack(c); |
|
|
detachstack(c); |
|
|
XUngrabButton(dpy, AnyButton, AnyModifier, c->win); |
|
|
|
|
|
setclientstate(c, WithdrawnState); |
|
|
|
|
|
|
|
|
if(!isdestroyed) { |
|
|
|
|
|
wc.border_width = c->oldbw; |
|
|
|
|
|
XGrabServer(dpy); |
|
|
|
|
|
XSetErrorHandler(xerrordummy); |
|
|
|
|
|
XConfigureWindow(dpy, c->win, CWBorderWidth, &wc); /* restore border */ |
|
|
|
|
|
XUngrabButton(dpy, AnyButton, AnyModifier, c->win); |
|
|
|
|
|
setclientstate(c, WithdrawnState); |
|
|
|
|
|
XSync(dpy, False); |
|
|
|
|
|
XSetErrorHandler(xerror); |
|
|
|
|
|
XUngrabServer(dpy); |
|
|
|
|
|
} |
|
|
free(c); |
|
|
free(c); |
|
|
XSync(dpy, False); |
|
|
|
|
|
XSetErrorHandler(xerror); |
|
|
|
|
|
XUngrabServer(dpy); |
|
|
|
|
|
focus(NULL); |
|
|
focus(NULL); |
|
|
arrange(); |
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
void |
|
|
void |
|
@ -1652,7 +1653,7 @@ unmapnotify(XEvent *e) { |
|
|
XUnmapEvent *ev = &e->xunmap; |
|
|
XUnmapEvent *ev = &e->xunmap; |
|
|
|
|
|
|
|
|
if((c = wintoclient(ev->window))) |
|
|
if((c = wintoclient(ev->window))) |
|
|
unmanage(c); |
|
|
|
|
|
|
|
|
unmanage(c, False); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
void |
|
|
void |
|
|