49 GrabModeAsync, GrabModeSync, None, None); |
49 GrabModeAsync, GrabModeSync, None, None); |
50 } |
50 } |
51 else |
51 else |
52 XGrabButton(dpy, AnyButton, AnyModifier, c->win, False, BUTTONMASK, |
52 XGrabButton(dpy, AnyButton, AnyModifier, c->win, False, BUTTONMASK, |
53 GrabModeAsync, GrabModeSync, None, None); |
53 GrabModeAsync, GrabModeSync, None, None); |
|
54 } |
|
55 |
|
56 static void |
|
57 setclientstate(Client *c, long state) { |
|
58 long data[] = {state, None}; |
|
59 XChangeProperty(dpy, c->win, wmatom[WMState], wmatom[WMState], 32, |
|
60 PropModeReplace, (unsigned char *)data, 2); |
54 } |
61 } |
55 |
62 |
56 static int |
63 static int |
57 xerrordummy(Display *dsply, XErrorEvent *ee) { |
64 xerrordummy(Display *dsply, XErrorEvent *ee) { |
58 return 0; |
65 return 0; |
291 if(sel == c) { |
299 if(sel == c) { |
292 for(nc = stack; nc && !isvisible(nc); nc = nc->snext); |
300 for(nc = stack; nc && !isvisible(nc); nc = nc->snext); |
293 focus(nc); |
301 focus(nc); |
294 } |
302 } |
295 XUngrabButton(dpy, AnyButton, AnyModifier, c->win); |
303 XUngrabButton(dpy, AnyButton, AnyModifier, c->win); |
|
304 setclientstate(c, WithdrawnState); |
296 free(c->tags); |
305 free(c->tags); |
297 free(c); |
306 free(c); |
298 XSync(dpy, False); |
307 XSync(dpy, False); |
299 XSetErrorHandler(xerror); |
308 XSetErrorHandler(xerror); |
300 XUngrabServer(dpy); |
309 XUngrabServer(dpy); |