commit fde667e1aa3d41bcb88f69718626e419301b140e
parent 5e753ad1ce20b6d666cbe6ce28ba08cec84e3f27
Author: Kris Maglione <kris@suckless.org>
Date: Sat, 23 Jan 2010 16:56:42 -0500
Remove destroyed clients from the save set. Closes issue #129.
Diffstat:
3 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/cmd/wmii/client.c b/cmd/wmii/client.c
@@ -293,12 +293,16 @@ client_destroy(Client *c) {
else
reparentwindow(&c->w, &scr.root, r.min);
+ if(starting > -1)
+ XRemoveFromSaveSet(display, c->w.xid);
+
traperrors(false);
XUngrabServer(display);
none = nil;
client_setviews(c, &none);
- client_unmap(c, WithdrawnState);
+ if(starting > -1)
+ client_unmap(c, WithdrawnState);
refree(&c->tagre);
refree(&c->tagvre);
free(c->retags);
@@ -307,7 +311,8 @@ client_destroy(Client *c) {
ewmh_destroyclient(c);
group_remove(c);
- event("DestroyClient %C\n", c);
+ if(starting > -1)
+ event("DestroyClient %C\n", c);
flushevents(FocusChangeMask, true);
free(c->w.hints);
diff --git a/cmd/wmii/dat.h b/cmd/wmii/dat.h
@@ -385,7 +385,7 @@ typedef void (*XHandler)(XEvent*);
EXTERN XHandler handler[LASTEvent];
/* Misc */
-EXTERN bool starting;
+EXTERN int starting;
EXTERN bool resizing;
EXTERN long ignoreenter;
EXTERN char* user;
diff --git a/cmd/wmii/main.c b/cmd/wmii/main.c
@@ -225,6 +225,7 @@ init_screens(void) {
static void
cleanup(void) {
+ starting = -1;
while(client)
client_destroy(client);
ixp_server_close(&srv);