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);
|
drawtitle(c);
|
||||||
XSetInputFocus(dpy, c->win, RevertToPointerRoot, CurrentTime);
|
XSetInputFocus(dpy, c->win, RevertToPointerRoot, CurrentTime);
|
||||||
XSync(dpy, False);
|
XSync(dpy, False);
|
||||||
|
XChangeProperty(dpy, root, netatom[NetActiveWindow], XA_WINDOW, 32,
|
||||||
|
PropModeReplace, (unsigned char *)&c->win, 1);
|
||||||
while(XCheckMaskEvent(dpy, EnterWindowMask, &ev));
|
while(XCheckMaskEvent(dpy, EnterWindowMask, &ev));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -459,6 +461,9 @@ unmanage(Client *c)
|
||||||
arrange(NULL);
|
arrange(NULL);
|
||||||
if(sel)
|
if(sel)
|
||||||
focus(sel);
|
focus(sel);
|
||||||
|
else
|
||||||
|
XChangeProperty(dpy, root, netatom[NetActiveWindow], XA_WINDOW, 32,
|
||||||
|
PropModeReplace, (unsigned char *)NULL, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
2
dwm.h
2
dwm.h
|
@ -22,7 +22,7 @@ union Arg {
|
||||||
};
|
};
|
||||||
|
|
||||||
/* atoms */
|
/* atoms */
|
||||||
enum { NetSupported, NetWMName, NetLast };
|
enum { NetSupported, NetWMName, NetActiveWindow, NetLast };
|
||||||
enum { WMProtocols, WMDelete, WMLast };
|
enum { WMProtocols, WMDelete, WMLast };
|
||||||
|
|
||||||
/* cursor */
|
/* 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
|
static void
|
||||||
configurerequest(XEvent *e)
|
configurerequest(XEvent *e)
|
||||||
{
|
{
|
||||||
|
@ -339,6 +351,7 @@ unmapnotify(XEvent *e)
|
||||||
|
|
||||||
void (*handler[LASTEvent]) (XEvent *) = {
|
void (*handler[LASTEvent]) (XEvent *) = {
|
||||||
[ButtonPress] = buttonpress,
|
[ButtonPress] = buttonpress,
|
||||||
|
[ClientMessage] = clientmessage,
|
||||||
[ConfigureRequest] = configurerequest,
|
[ConfigureRequest] = configurerequest,
|
||||||
[DestroyNotify] = destroynotify,
|
[DestroyNotify] = destroynotify,
|
||||||
[EnterNotify] = enternotify,
|
[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);
|
wmatom[WMDelete] = XInternAtom(dpy, "WM_DELETE_WINDOW", False);
|
||||||
netatom[NetSupported] = XInternAtom(dpy, "_NET_SUPPORTED", False);
|
netatom[NetSupported] = XInternAtom(dpy, "_NET_SUPPORTED", False);
|
||||||
netatom[NetWMName] = XInternAtom(dpy, "_NET_WM_NAME", 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,
|
XChangeProperty(dpy, root, netatom[NetSupported], XA_ATOM, 32,
|
||||||
PropModeReplace, (unsigned char *) netatom, NetLast);
|
PropModeReplace, (unsigned char *) netatom, NetLast);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue