}
static void
+clientmessage(XEvent *e)
+{
+ Client *c;
+ XClientMessageEvent *ev = &e->xclient;
+
+ if(ev->message_type == netatom[NetActiveWindow]) {
+ if((c = getclient(ev->window)) && c->tags[tsel])
+ focus(c);
+ }
+}
+
+static void
configurerequest(XEvent *e)
{
Client *c;
XSendEvent(dpy, c->win, True, NoEventMask, &synev);
}
XSync(dpy, False);
- arrange(NULL);
- drawall();
+ if(c->isfloat)
+ resize(c, False, TopLeft);
+ else
+ arrange(NULL);
}
else {
wc.x = ev->x;
void (*handler[LASTEvent]) (XEvent *) = {
[ButtonPress] = buttonpress,
+ [ClientMessage] = clientmessage,
[ConfigureRequest] = configurerequest,
[DestroyNotify] = destroynotify,
[EnterNotify] = enternotify,
for(i = 0; i < len; i++) {
code = XKeysymToKeycode(dpy, key[i].keysym);
- /* normal */
- XUngrabKey(dpy, code, key[i].mod, root);
XGrabKey(dpy, code, key[i].mod, root, True,
GrabModeAsync, GrabModeAsync);
- /* capslock */
- XUngrabKey(dpy, code, key[i].mod | LockMask, root);
XGrabKey(dpy, code, key[i].mod | LockMask, root, True,
GrabModeAsync, GrabModeAsync);
- /* numlock */
- XUngrabKey(dpy, code, key[i].mod | NUMLOCKMASK, root);
XGrabKey(dpy, code, key[i].mod | NUMLOCKMASK, root, True,
GrabModeAsync, GrabModeAsync);
- /* capslock & numlock */
- XUngrabKey(dpy, code, key[i].mod | NUMLOCKMASK | LockMask, root);
XGrabKey(dpy, code, key[i].mod | NUMLOCKMASK | LockMask, root, True,
GrabModeAsync, GrabModeAsync);
}