equal
deleted
inserted
replaced
148 XSetWindowBorder(dpy, c->win, dc.sel[ColBorder]); |
148 XSetWindowBorder(dpy, c->win, dc.sel[ColBorder]); |
149 XSetInputFocus(dpy, c->win, RevertToPointerRoot, CurrentTime); |
149 XSetInputFocus(dpy, c->win, RevertToPointerRoot, CurrentTime); |
150 } |
150 } |
151 else |
151 else |
152 XSetInputFocus(dpy, root, RevertToPointerRoot, CurrentTime); |
152 XSetInputFocus(dpy, root, RevertToPointerRoot, CurrentTime); |
|
153 } |
|
154 |
|
155 void |
|
156 focustopvisible(void) { |
|
157 Client *c; |
|
158 |
|
159 for(c = stack; c && !isvisible(c); c = c->snext); |
|
160 focus(c); |
153 } |
161 } |
154 |
162 |
155 void |
163 void |
156 killclient(const char *arg) { |
164 killclient(const char *arg) { |
157 XEvent ev; |
165 XEvent ev; |
389 XGrabServer(dpy); |
397 XGrabServer(dpy); |
390 XSetErrorHandler(xerrordummy); |
398 XSetErrorHandler(xerrordummy); |
391 XConfigureWindow(dpy, c->win, CWBorderWidth, &wc); /* restore border */ |
399 XConfigureWindow(dpy, c->win, CWBorderWidth, &wc); /* restore border */ |
392 detach(c); |
400 detach(c); |
393 detachstack(c); |
401 detachstack(c); |
394 if(sel == c) { |
402 if(sel == c) |
395 for(nc = stack; nc && !isvisible(nc); nc = nc->snext); |
403 focustopvisible(); |
396 focus(nc); |
|
397 } |
|
398 XUngrabButton(dpy, AnyButton, AnyModifier, c->win); |
404 XUngrabButton(dpy, AnyButton, AnyModifier, c->win); |
399 setclientstate(c, WithdrawnState); |
405 setclientstate(c, WithdrawnState); |
400 free(c->tags); |
406 free(c->tags); |
401 free(c); |
407 free(c); |
402 XSync(dpy, False); |
408 XSync(dpy, False); |