void changemon(Client *c, Monitor *m) { if(c->mon == m) return; detach(c); detachstack(c); c->mon = m; attach(c); attachstack(c); }
void unmanage(Client *c) { Client *nc; /* The server grab construct avoids race conditions. */ XGrabServer(dpy); XSetErrorHandler(xerrordummy); detachstack(c); detachclient(c); if(sel == c) { for(nc = stack; nc && (nc->view != view); nc = nc->snext); focus(nc); } XUngrabButton(dpy, AnyButton, AnyModifier, c->win); setclientstate(c, WithdrawnState); free(c); XSync(dpy, False); XSetErrorHandler(xerror); XUngrabServer(dpy); arrange(); }
void focus(Client *c) { if(c && c->view != view) return; if(sel && sel != c) { XSetWindowBorder(dpy, sel->win, normcol); } if(c) { detachstack(c); c->snext = stack; stack = c; } sel = c; if(!selscreen) return; if(c) { XSetWindowBorder(dpy, c->win, selcol); XSetInputFocus(dpy, c->win, RevertToPointerRoot, CurrentTime); } else XSetInputFocus(dpy, root, RevertToPointerRoot, CurrentTime); }