JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
update
[dwm.git] / dwm.c
diff --git a/dwm.c b/dwm.c
index 5ea74cb..7d19b07 100644 (file)
--- a/dwm.c
+++ b/dwm.c
@@ -218,7 +218,7 @@ static void togglefloating(const Arg *arg);
 static void toggletag(const Arg *arg);
 static void toggleview(const Arg *arg);
 static void unfocus(Client *c);
-static void unmanage(Client *c, Bool isdestroyed);
+static void unmanage(Client *c, Bool destroyed);
 static void unmapnotify(XEvent *e);
 static void updategeom(void);
 static void updatebarpos(Monitor *m);
@@ -1039,9 +1039,15 @@ killclient(const Arg *arg) {
                ev.xclient.data.l[1] = CurrentTime;
                XSendEvent(dpy, selmon->sel->win, False, NoEventMask, &ev);
        }
-       else
+       else {
+               XGrabServer(dpy);
+               XSetErrorHandler(xerrordummy);
+               XSetCloseDownMode(dpy, DestroyAll);
                XKillClient(dpy, selmon->sel->win);
-       XSync(dpy, False);
+               XSync(dpy, False);
+               XSetErrorHandler(xerror);
+               XUngrabServer(dpy);
+       }
 }
 
 void
@@ -1627,13 +1633,13 @@ unfocus(Client *c) {
 }
 
 void
-unmanage(Client *c, Bool isdestroyed) {
+unmanage(Client *c, Bool destroyed) {
        XWindowChanges wc;
 
        /* The server grab construct avoids race conditions. */
        detach(c);
        detachstack(c);
-       if(!isdestroyed) {
+       if(!destroyed) {
                wc.border_width = c->oldbw;
                XGrabServer(dpy);
                XSetErrorHandler(xerrordummy);
@@ -1646,6 +1652,7 @@ unmanage(Client *c, Bool isdestroyed) {
        }
        free(c);
        focus(NULL);
+       arrange();
 }
 
 void