client.c
changeset 875 73cd10af065a
parent 874 e42bdee29c92
child 877 29c4a4d1214c
equal deleted inserted replaced
874:e42bdee29c92 875:73cd10af065a
   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);