-static void floating(void);
-static void tiling(void);
-static void (*arrange)(void) = floating;
+static void (*arrange)(Arg *) = floating;
+
+static void
+center(Client *c)
+{
+ XWarpPointer(dpy, None, c->win, 0, 0, 0, 0, c->w / 2, c->h / 2);
+}
+
+static Client *
+next(Client *c)
+{
+ for(; c && !c->tags[tsel]; c = c->next);
+ return c;
+}
+
+void
+zoom(Arg *arg)
+{
+ Client **l;
+
+ if(!sel)
+ return;
+
+ for(l = &clients; *l && *l != sel; l = &(*l)->next);
+ *l = sel->next;
+
+ sel->next = clients; /* pop */
+ clients = sel;
+ arrange(NULL);
+ center(sel);
+ focus(sel);
+}