# HG changeset patch # User Anselm R.Garbe # Date 1155049725 -7200 # Node ID f4f5d000ce7a5fb815002cc61552884db9edf1d6 # Parent ebb1fd90f633702f2a375fda7c1fea4fd94ae283 implemented NET_ACTIVE_WINDOW support diff -r ebb1fd90f633 -r f4f5d000ce7a client.c --- a/client.c Tue Aug 08 12:58:05 2006 +0200 +++ b/client.c Tue Aug 08 17:08:45 2006 +0200 @@ -58,6 +58,8 @@ drawtitle(c); XSetInputFocus(dpy, c->win, RevertToPointerRoot, CurrentTime); XSync(dpy, False); + XChangeProperty(dpy, root, netatom[NetActiveWindow], XA_WINDOW, 32, + PropModeReplace, (unsigned char *)&c->win, 1); while(XCheckMaskEvent(dpy, EnterWindowMask, &ev)); } @@ -459,6 +461,9 @@ arrange(NULL); if(sel) focus(sel); + else + XChangeProperty(dpy, root, netatom[NetActiveWindow], XA_WINDOW, 32, + PropModeReplace, (unsigned char *)NULL, 1); } void diff -r ebb1fd90f633 -r f4f5d000ce7a dwm.h --- a/dwm.h Tue Aug 08 12:58:05 2006 +0200 +++ b/dwm.h Tue Aug 08 17:08:45 2006 +0200 @@ -22,7 +22,7 @@ }; /* atoms */ -enum { NetSupported, NetWMName, NetLast }; +enum { NetSupported, NetWMName, NetActiveWindow, NetLast }; enum { WMProtocols, WMDelete, WMLast }; /* cursor */ diff -r ebb1fd90f633 -r f4f5d000ce7a event.c --- a/event.c Tue Aug 08 12:58:05 2006 +0200 +++ b/event.c Tue Aug 08 17:08:45 2006 +0200 @@ -146,6 +146,18 @@ } 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; @@ -339,6 +351,7 @@ void (*handler[LASTEvent]) (XEvent *) = { [ButtonPress] = buttonpress, + [ClientMessage] = clientmessage, [ConfigureRequest] = configurerequest, [DestroyNotify] = destroynotify, [EnterNotify] = enternotify, diff -r ebb1fd90f633 -r f4f5d000ce7a main.c --- a/main.c Tue Aug 08 12:58:05 2006 +0200 +++ b/main.c Tue Aug 08 17:08:45 2006 +0200 @@ -201,6 +201,7 @@ wmatom[WMDelete] = XInternAtom(dpy, "WM_DELETE_WINDOW", False); netatom[NetSupported] = XInternAtom(dpy, "_NET_SUPPORTED", False); netatom[NetWMName] = XInternAtom(dpy, "_NET_WM_NAME", False); + netatom[NetActiveWindow] = XInternAtom(dpy, "_NET_ACTIVE_WINDOW", False); XChangeProperty(dpy, root, netatom[NetSupported], XA_ATOM, 32, PropModeReplace, (unsigned char *) netatom, NetLast);