+ update_name(c);
+
+ for(l=&clients; *l; l=&(*l)->next);
+ c->next = *l; /* *l == nil */
+ *l = c;
+ c->snext = stack;
+ stack = c;
+ XMapWindow(dpy, c->win);
+ XMapWindow(dpy, c->title);
+ XGrabButton(dpy, Button1, Mod1Mask, c->win, False, ButtonPressMask,
+ GrabModeAsync, GrabModeSync, None, None);
+ XGrabButton(dpy, Button2, Mod1Mask, c->win, False, ButtonPressMask,
+ GrabModeAsync, GrabModeSync, None, None);
+ XGrabButton(dpy, Button3, Mod1Mask, c->win, False, ButtonPressMask,
+ GrabModeAsync, GrabModeSync, None, None);
+ resize(c);
+ focus(c);
+}
+
+void
+resize(Client *c)
+{
+ XConfigureEvent e;
+
+ XMoveResizeWindow(dpy, c->win, c->x, c->y, c->w, c->h);
+ e.type = ConfigureNotify;
+ e.event = c->win;
+ e.window = c->win;
+ e.x = c->x;
+ e.y = c->y;
+ e.width = c->w;
+ e.height = c->h;
+ e.border_width = 0;
+ e.above = None;
+ e.override_redirect = False;
+ XSelectInput(dpy, c->win, CLIENT_MASK & ~StructureNotifyMask);
+ XSendEvent(dpy, c->win, False, StructureNotifyMask, (XEvent *)&e);
+ XSelectInput(dpy, c->win, CLIENT_MASK);