forked from mirror/dwm
implemented NET_ACTIVE_WINDOW support
This commit is contained in:
parent
c86f131681
commit
92e55c7c53
4 changed files with 20 additions and 1 deletions
5
client.c
5
client.c
|
@ -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
|
||||
|
|
2
dwm.h
2
dwm.h
|
@ -22,7 +22,7 @@ union Arg {
|
|||
};
|
||||
|
||||
/* atoms */
|
||||
enum { NetSupported, NetWMName, NetLast };
|
||||
enum { NetSupported, NetWMName, NetActiveWindow, NetLast };
|
||||
enum { WMProtocols, WMDelete, WMLast };
|
||||
|
||||
/* cursor */
|
||||
|
|
13
event.c
13
event.c
|
@ -145,6 +145,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)
|
||||
{
|
||||
|
@ -339,6 +351,7 @@ unmapnotify(XEvent *e)
|
|||
|
||||
void (*handler[LASTEvent]) (XEvent *) = {
|
||||
[ButtonPress] = buttonpress,
|
||||
[ClientMessage] = clientmessage,
|
||||
[ConfigureRequest] = configurerequest,
|
||||
[DestroyNotify] = destroynotify,
|
||||
[EnterNotify] = enternotify,
|
||||
|
|
1
main.c
1
main.c
|
@ -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);
|
||||
|
||||
|
|
Loading…
Reference in a new issue