tsanders solution is convincing and elegant - dwm - [fork] customized build of … | |
git clone git://src.adamsgaard.dk/dwm | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 69b738c097d8f471873a227e8668d8a35014be3d | |
parent da0b2a2f31d5a849464215a86a968ec3a1af2f73 | |
Author: Anselm R. Garbe <[email protected]> | |
Date: Wed, 6 Sep 2006 11:54:16 +0200 | |
sanders solution is convincing and elegant | |
Diffstat: | |
M client.c | 8 -------- | |
M view.c | 50 ++++++-----------------------… | |
2 files changed, 9 insertions(+), 49 deletions(-) | |
--- | |
diff --git a/client.c b/client.c | |
t@@ -99,14 +99,6 @@ focus(Client *c) | |
} | |
} | |
if(c) { | |
- if((c->isfloat || arrange == dofloat) && (c != clients)) { | |
- detach(c); | |
- if(clients) { | |
- clients->prev = c; | |
- c->next = clients; | |
- } | |
- clients = c; | |
- } | |
grabbuttons(c, True); | |
drawtitle(c); | |
XSetInputFocus(dpy, c->win, RevertToPointerRoot, CurrentTime); | |
diff --git a/view.c b/view.c | |
t@@ -215,52 +215,20 @@ resizecol(Arg *arg) | |
void | |
restack() | |
{ | |
- static unsigned int nwins = 0; | |
- static Window *wins = NULL; | |
- unsigned int f, fi, m, mi, n; | |
Client *c; | |
XEvent ev; | |
- | |
- for(f = 0, m = 0, c = clients; c; c = c->next) | |
- if(isvisible(c)) { | |
- if(c->isfloat || arrange == dofloat) | |
- f++; | |
- else | |
- m++; | |
- } | |
- if(!(n = 2 * (f + m))) { | |
- drawstatus(); | |
+ | |
+ if(!sel) | |
return; | |
+ if(sel->isfloat || arrange == dofloat) { | |
+ XRaiseWindow(dpy, sel->win); | |
+ XRaiseWindow(dpy, sel->twin); | |
} | |
- if(nwins < n) { | |
- nwins = n; | |
- wins = erealloc(wins, nwins * sizeof(Window)); | |
- } | |
- | |
- fi = 0; | |
- mi = 2 * f; | |
- if(sel) { | |
- if(sel->isfloat || arrange == dofloat) { | |
- wins[fi++] = sel->twin; | |
- wins[fi++] = sel->win; | |
- } | |
- else { | |
- wins[mi++] = sel->twin; | |
- wins[mi++] = sel->win; | |
- } | |
- } | |
- for(c = clients; c; c = c->next) | |
- if(isvisible(c) && c != sel) { | |
- if(c->isfloat || arrange == dofloat) { | |
- wins[fi++] = c->twin; | |
- wins[fi++] = c->win; | |
- } | |
- else { | |
- wins[mi++] = c->twin; | |
- wins[mi++] = c->win; | |
- } | |
+ if(arrange != dofloat) | |
+ for(c = nexttiled(clients); c; c = nexttiled(c->next)) { | |
+ XLowerWindow(dpy, c->twin); | |
+ XLowerWindow(dpy, c->win); | |
} | |
- XRestackWindows(dpy, wins, n); | |
drawall(); | |
XSync(dpy, False); | |
while(XCheckMaskEvent(dpy, EnterWindowMask, &ev)); |