+#include <X11/Xutil.h>
+
+/* static functions */
+
+static void
+grabbutton(Client *c, unsigned int button, unsigned int modifier)
+{
+ XGrabButton(dpy, button, modifier, c->win, False, BUTTONMASK,
+ GrabModeAsync, GrabModeSync, None, None);
+ XGrabButton(dpy, button, modifier | LockMask, c->win, False, BUTTONMASK,
+ GrabModeAsync, GrabModeSync, None, None);
+ XGrabButton(dpy, button, modifier | numlockmask, c->win, False, BUTTONMASK,
+ GrabModeAsync, GrabModeSync, None, None);
+ XGrabButton(dpy, button, modifier | numlockmask | LockMask, c->win, False, BUTTONMASK,
+ GrabModeAsync, GrabModeSync, None, None);
+}
+
+static void
+resizetitle(Client *c)
+{
+ int i;
+
+ c->tw = 0;
+ for(i = 0; i < ntags; i++)
+ if(c->tags[i])
+ c->tw += textw(tags[i]);
+ c->tw += textw(c->name);
+ if(c->tw > c->w)
+ c->tw = c->w + 2;
+ c->tx = c->x + c->w - c->tw + 2;
+ c->ty = c->y;
+ if(isvisible(c))
+ XMoveResizeWindow(dpy, c->title, c->tx, c->ty, c->tw, c->th);
+ else
+ XMoveResizeWindow(dpy, c->title, c->tx + 2 * sw, c->ty, c->tw, c->th);
+
+}
+
+static void
+ungrabbutton(Client *c, unsigned int button, unsigned int modifier)
+{
+ XUngrabButton(dpy, button, modifier, c->win);
+ XUngrabButton(dpy, button, modifier | LockMask, c->win);
+ XUngrabButton(dpy, button, modifier | numlockmask, c->win);
+ XUngrabButton(dpy, button, modifier | numlockmask | LockMask, c->win);
+}
+
+static int
+xerrordummy(Display *dsply, XErrorEvent *ee)
+{
+ return 0;
+}