Introduction
Introduction Statistics Contact Development Disclaimer Help
tapplied Peter/Andreas NetActiveWindow patch in a slightly modified version - d…
git clone git://src.adamsgaard.dk/dwm
Log
Files
Refs
README
LICENSE
---
commit 3c2d303c0e8efc9a08f2e70867794b003b886810
parent 1e20a0f78a580ebf4ad521d0e074125bb0a7d4b8
Author: Anselm R Garbe <[email protected]>
Date: Thu, 14 Apr 2011 13:46:25 +0000
applied Peter/Andreas NetActiveWindow patch in a slightly modified version
Diffstat:
M dwm.c | 31 ++++++++++++++++++++++-------…
1 file changed, 22 insertions(+), 9 deletions(-)
---
diff --git a/dwm.c b/dwm.c
t@@ -58,7 +58,7 @@
enum { CurNormal, CurResize, CurMove, CurLast }; /* cursor */
enum { ColBorder, ColFG, ColBG, ColLast }; /* color */
enum { NetSupported, NetWMName, NetWMState,
- NetWMFullscreen, NetLast }; /* EWMH atoms */
+ NetWMFullscreen, NetActiveWindow, NetLast }; /* EWMH atoms */
enum { WMProtocols, WMDelete, WMState, WMTakeFocus, WMLast }; /* default atoms…
enum { ClkTagBar, ClkLtSymbol, ClkStatusText, ClkWinTitle,
ClkClientWin, ClkRootWin, ClkLast }; /* clicks */
t@@ -1259,11 +1259,11 @@ propertynotify(XEvent *e) {
void
clientmessage(XEvent *e) {
XClientMessageEvent *cme = &e->xclient;
- Client *c;
+ Client *c = wintoclient(cme->window);
- if((c = wintoclient(cme->window))
- && (cme->message_type == netatom[NetWMState] && cme->data.l[1] == neta…
- {
+ if(!c)
+ return;
+ if(cme->message_type == netatom[NetWMState] && cme->data.l[1] == netat…
if(cme->data.l[0]) {
XChangeProperty(dpy, cme->window, netatom[NetWMState],…
PropModeReplace, (unsigned char*)&neta…
t@@ -1287,6 +1287,16 @@ clientmessage(XEvent *e) {
arrange(c->mon);
}
}
+ else if(cme->message_type == netatom[NetActiveWindow]) {
+ if(!ISVISIBLE(c)) {
+ Arg a = { .ui = c->tags };
+ view(&a);
+ }
+ detach(c);
+ attach(c);
+ focus(c);
+ arrange(c->mon);
+ }
}
void
t@@ -1460,7 +1470,7 @@ sendevent(Client *c, Atom proto) {
exists = protocols[n] == proto;
XFree(protocols);
}
- if (exists) {
+ if(exists) {
ev.type = ClientMessage;
ev.xclient.window = c->win;
ev.xclient.message_type = wmatom[WMProtocols];
t@@ -1474,7 +1484,7 @@ sendevent(Client *c, Atom proto) {
void
setfocus(Client *c) {
- if (!c->neverfocus)
+ if(!c->neverfocus)
XSetInputFocus(dpy, c->win, RevertToPointerRoot, CurrentTime);
sendevent(c, wmatom[WMTakeFocus]);
}
t@@ -1525,6 +1535,7 @@ setup(void) {
wmatom[WMProtocols] = XInternAtom(dpy, "WM_PROTOCOLS", False);
wmatom[WMDelete] = XInternAtom(dpy, "WM_DELETE_WINDOW", False);
wmatom[WMState] = XInternAtom(dpy, "WM_STATE", False);
+ netatom[NetActiveWindow] = XInternAtom(dpy, "_NET_ACTIVE_WINDOW", Fals…
wmatom[WMTakeFocus] = XInternAtom(dpy, "WM_TAKE_FOCUS", False);
netatom[NetSupported] = XInternAtom(dpy, "_NET_SUPPORTED", False);
netatom[NetWMName] = XInternAtom(dpy, "_NET_WM_NAME", False);
t@@ -1942,8 +1953,10 @@ updatewmhints(Client *c) {
}
else
c->isurgent = (wmh->flags & XUrgencyHint) ? True : Fal…
- if (wmh->flags & InputHint) c->neverfocus = !wmh->input;
- else c->neverfocus = False;
+ if(wmh->flags & InputHint)
+ c->neverfocus = !wmh->input;
+ else
+ c->neverfocus = False;
XFree(wmh);
}
}
You are viewing proxied material from mx1.adamsgaard.dk. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.