about summary refs log tree commit diff
path: root/client.c
diff options
context:
space:
mode:
Diffstat (limited to 'client.c')
-rw-r--r--client.c24
1 files changed, 9 insertions, 15 deletions
diff --git a/client.c b/client.c
index f293147..e22f4c9 100644
--- a/client.c
+++ b/client.c
@@ -145,17 +145,19 @@ client_init(Window win, struct screen_ctx *sc, int mapped)
 }
 
 void
-client_delete(struct client_ctx *cc)
+client_delete(struct client_ctx *cc, int destroy)
 {
 	struct screen_ctx	*sc = cc->sc;
 	struct winname		*wn;
 
-	XGrabServer(X_Dpy);
-	cc->state = WithdrawnState;
-	xu_set_wm_state(cc->win, cc->state);
-	XRemoveFromSaveSet(X_Dpy, cc->win);
-	XSync(X_Dpy, False);
-	XUngrabServer(X_Dpy);
+	if (destroy) {
+		XGrabServer(X_Dpy);
+		cc->state = WithdrawnState;
+		xu_set_wm_state(cc->win, cc->state);
+		XRemoveFromSaveSet(X_Dpy, cc->win);
+		XSync(X_Dpy, False);
+		XUngrabServer(X_Dpy);
+	}
 
 	TAILQ_REMOVE(&sc->mruq, cc, mru_entry);
 	TAILQ_REMOVE(&Clientq, cc, entry);
@@ -186,15 +188,10 @@ client_delete(struct client_ctx *cc)
 void
 client_leave(struct client_ctx *cc)
 {
-	struct screen_ctx	*sc;
-
 	if (cc == NULL)
 		cc = client_current();
 	if (cc == NULL)
 		return;
-
-	sc = cc->sc;
-	xu_btn_ungrab(sc->rootwin, AnyModifier, Button1);
 }
 
 void
@@ -396,8 +393,6 @@ client_resize(struct client_ctx *cc, int reset)
 		xu_ewmh_set_net_wm_state(cc);
 	}
 
-	client_draw_border(cc);
-
 	XMoveResizeWindow(X_Dpy, cc->win, cc->geom.x,
 	    cc->geom.y, cc->geom.w, cc->geom.h);
 	client_config(cc);
@@ -493,7 +488,6 @@ client_unhide(struct client_ctx *cc)
 	cc->flags &= ~CLIENT_HIDDEN;
 	cc->state = NormalState;
 	xu_set_wm_state(cc->win, cc->state);
-	client_draw_border(cc);
 }
 
 void