tminor fix of the NetActiveWindow multi-monitor flaw, slight rearrangement - dw… | |
git clone git://src.adamsgaard.dk/dwm | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit d24837f1adb40b3ecdb6d20e0a5102b1bf3774a3 | |
parent 3c2d303c0e8efc9a08f2e70867794b003b886810 | |
Author: Anselm R Garbe <[email protected]> | |
Date: Fri, 15 Apr 2011 08:12:20 +0000 | |
minor fix of the NetActiveWindow multi-monitor flaw, slight rearrangement | |
Diffstat: | |
M dwm.c | 107 ++++++++++++++++-------------… | |
1 file changed, 54 insertions(+), 53 deletions(-) | |
--- | |
diff --git a/dwm.c b/dwm.c | |
t@@ -521,6 +521,46 @@ clearurgent(Client *c) { | |
} | |
void | |
+clientmessage(XEvent *e) { | |
+ XClientMessageEvent *cme = &e->xclient; | |
+ Client *c = wintoclient(cme->window); | |
+ | |
+ 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… | |
+ c->oldstate = c->isfloating; | |
+ c->oldbw = c->bw; | |
+ c->bw = 0; | |
+ c->isfloating = True; | |
+ resizeclient(c, c->mon->mx, c->mon->my, c->mon->mw, c-… | |
+ XRaiseWindow(dpy, c->win); | |
+ } | |
+ else { | |
+ XChangeProperty(dpy, cme->window, netatom[NetWMState],… | |
+ PropModeReplace, (unsigned char*)0, 0); | |
+ c->isfloating = c->oldstate; | |
+ c->bw = c->oldbw; | |
+ c->x = c->oldx; | |
+ c->y = c->oldy; | |
+ c->w = c->oldw; | |
+ c->h = c->oldh; | |
+ resizeclient(c, c->x, c->y, c->w, c->h); | |
+ arrange(c->mon); | |
+ } | |
+ } | |
+ else if(cme->message_type == netatom[NetActiveWindow]) { | |
+ if(!ISVISIBLE(c)) { | |
+ c->mon->seltags ^= 1; … | |
+ c->mon->tagset[c->mon->seltags] = c->tags; | |
+ } | |
+ pop(c); | |
+ } | |
+} | |
+ | |
+void | |
configure(Client *c) { | |
XConfigureEvent ce; | |
t@@ -1212,14 +1252,12 @@ nexttiled(Client *c) { | |
return c; | |
} | |
-Monitor * | |
-ptrtomon(int x, int y) { | |
- Monitor *m; | |
- | |
- for(m = mons; m; m = m->next) | |
- if(INRECT(x, y, m->wx, m->wy, m->ww, m->wh)) | |
- return m; | |
- return selmon; | |
+void | |
+pop(Client *c) { | |
+ detach(c); | |
+ attach(c); | |
+ focus(c); | |
+ arrange(c->mon); | |
} | |
void | |
t@@ -1256,49 +1294,15 @@ propertynotify(XEvent *e) { | |
} | |
} | |
-void | |
-clientmessage(XEvent *e) { | |
- XClientMessageEvent *cme = &e->xclient; | |
- Client *c = wintoclient(cme->window); | |
+Monitor * | |
+ptrtomon(int x, int y) { | |
+ Monitor *m; | |
- 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… | |
- c->oldstate = c->isfloating; | |
- c->oldbw = c->bw; | |
- c->bw = 0; | |
- c->isfloating = True; | |
- resizeclient(c, c->mon->mx, c->mon->my, c->mon->mw, c-… | |
- XRaiseWindow(dpy, c->win); | |
- } | |
- else { | |
- XChangeProperty(dpy, cme->window, netatom[NetWMState],… | |
- PropModeReplace, (unsigned char*)0, 0); | |
- c->isfloating = c->oldstate; | |
- c->bw = c->oldbw; | |
- c->x = c->oldx; | |
- c->y = c->oldy; | |
- c->w = c->oldw; | |
- c->h = c->oldh; | |
- resizeclient(c, c->x, c->y, c->w, c->h); | |
- 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); | |
- } | |
+ for(m = mons; m; m = m->next) | |
+ if(INRECT(x, y, m->wx, m->wy, m->ww, m->wh)) | |
+ return m; | |
+ return selmon; | |
} | |
- | |
void | |
quit(const Arg *arg) { | |
running = False; | |
t@@ -2043,10 +2047,7 @@ zoom(const Arg *arg) { | |
if(c == nexttiled(selmon->clients)) | |
if(!c || !(c = nexttiled(c->next))) | |
return; | |
- detach(c); | |
- attach(c); | |
- focus(c); | |
- arrange(c->mon); | |
+ pop(c); | |
} | |
int |