diff options
| author | Anselm R.Garbe <arg@10ksloc.org> | 2006-08-08 17:08:45 +0200 | 
|---|---|---|
| committer | Anselm R.Garbe <arg@10ksloc.org> | 2006-08-08 17:08:45 +0200 | 
| commit | 92e55c7c53cb808b584982ac8f6d69112d713fab (patch) | |
| tree | 6e8ad48b16b5baad43c0e5460deafc2d7dc6b741 | |
| parent | c86f131681182258208ef97e81206ccc44e718ee (diff) | |
| download | dwm-92e55c7c53cb808b584982ac8f6d69112d713fab.tar.gz | |
implemented NET_ACTIVE_WINDOW support
| -rw-r--r-- | client.c | 5 | ||||
| -rw-r--r-- | dwm.h | 2 | ||||
| -rw-r--r-- | event.c | 13 | ||||
| -rw-r--r-- | main.c | 1 | 
4 files changed, 20 insertions, 1 deletions
| @@ -58,6 +58,8 @@ focus(Client *c)  	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 @@ unmanage(Client *c)  	arrange(NULL);  	if(sel)  		focus(sel); +	else +		XChangeProperty(dpy, root, netatom[NetActiveWindow], XA_WINDOW, 32, +				PropModeReplace, (unsigned char *)NULL, 1);  }  void @@ -22,7 +22,7 @@ union Arg {  };  /* atoms */ -enum { NetSupported, NetWMName, NetLast }; +enum { NetSupported, NetWMName, NetActiveWindow, NetLast };  enum { WMProtocols, WMDelete, WMLast };  /* cursor */ @@ -146,6 +146,18 @@ buttonpress(XEvent *e)  }  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 @@ unmapnotify(XEvent *e)  void (*handler[LASTEvent]) (XEvent *) = {  	[ButtonPress] = buttonpress, +	[ClientMessage] = clientmessage,  	[ConfigureRequest] = configurerequest,  	[DestroyNotify] = destroynotify,  	[EnterNotify] = enternotify, @@ -201,6 +201,7 @@ main(int argc, char *argv[])  	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); | 
