-resizetitle(Client *c) {
- c->tw = textw(c->name);
- if(c->tw > c->w)
- c->tw = c->w + 2 * BORDERPX;
- c->tx = c->x + c->w - c->tw + 2 * BORDERPX;
- c->ty = c->y;
- if(isvisible(c))
- XMoveResizeWindow(dpy, c->twin, c->tx, c->ty, c->tw, c->th);
- else
- XMoveResizeWindow(dpy, c->twin, c->tx + 2 * sw, c->ty, c->tw, c->th);
+togglefloating(const char *arg) {
+ if(!sel || lt->arrange == floating)
+ return;
+ sel->isfloating = !sel->isfloating;
+ if(sel->isfloating)
+ resize(sel, sel->x, sel->y, sel->w, sel->h, True);
+ lt->arrange();
+}
+
+void
+unban(Client *c) {
+ if (!c->isbanned)
+ return;
+ XMoveWindow(dpy, c->win, c->x, c->y);
+ c->isbanned = False;
+}
+
+void
+unmanage(Client *c) {
+ XWindowChanges wc;
+
+ wc.border_width = c->oldborder;
+ /* The server grab construct avoids race conditions. */
+ XGrabServer(dpy);
+ XSetErrorHandler(xerrordummy);
+ XConfigureWindow(dpy, c->win, CWBorderWidth, &wc); /* restore border */
+ detach(c);
+ detachstack(c);
+ if(sel == c)
+ focus(NULL);
+ XUngrabButton(dpy, AnyButton, AnyModifier, c->win);
+ setclientstate(c, WithdrawnState);
+ free(c->tags);
+ free(c);
+ XSync(dpy, False);
+ XSetErrorHandler(xerror);
+ XUngrabServer(dpy);
+ lt->arrange();