timproved selection policy - dwm - [fork] customized build of dwm, the dynamic … | |
git clone git://src.adamsgaard.dk/dwm | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit c3c94c0e0a4da1562b040a17ee670312ad8e65af | |
parent 9d739090750ffb3b3a64e86e2331215b8901c360 | |
Author: Anselm R. Garbe <[email protected]> | |
Date: Tue, 29 Aug 2006 15:28:29 +0200 | |
improved selection policy | |
Diffstat: | |
M view.c | 44 +++++++++++++++++------------… | |
1 file changed, 24 insertions(+), 20 deletions(-) | |
--- | |
diff --git a/view.c b/view.c | |
t@@ -3,31 +3,39 @@ | |
* See LICENSE file for license details. | |
*/ | |
#include "dwm.h" | |
+#include <stdio.h> | |
/* static */ | |
+static Client * | |
+minclient() | |
+{ | |
+ Client *c, *min; | |
+ | |
+ for(min = c = clients; c; c = c->next) | |
+ if(c->weight < min->weight) | |
+ min = c; | |
+ return min; | |
+} | |
+ | |
+ | |
static void | |
reorder() | |
{ | |
- Client *c, *orig, *p; | |
+ Client *c, *newclients, *tail; | |
- orig = clients; | |
- clients = NULL; | |
- | |
- while((c = orig)) { | |
- orig = orig->next; | |
+ newclients = tail = NULL; | |
+ while((c = minclient())) { | |
detach(c); | |
- | |
- for(p = clients; p && p->next && p->weight <= c->weight; p = p… | |
- c->prev = p; | |
- if(p) { | |
- if((c->next = p->next)) | |
- c->next->prev = c; | |
- p->next = c; | |
+ if(tail) { | |
+ c->prev = tail; | |
+ tail->next = c; | |
+ tail = c; | |
} | |
else | |
- clients = c; | |
+ tail = newclients = c; | |
} | |
+ clients = newclients; | |
} | |
/* extern */ | |
t@@ -59,9 +67,7 @@ dofloat(Arg *arg) | |
else | |
ban(c); | |
} | |
- if(!sel || !isvisible(sel)) | |
- sel = getnext(clients); | |
- if(sel) | |
+ if((sel = getnext(clients))) | |
focus(sel); | |
else | |
XSetInputFocus(dpy, root, RevertToPointerRoot, CurrentTime); | |
t@@ -124,9 +130,7 @@ dotile(Arg *arg) | |
else | |
ban(c); | |
} | |
- if(!sel || !isvisible(sel)) | |
- sel = getnext(clients); | |
- if(sel) | |
+ if((sel = getnext(clients))) | |
focus(sel); | |
else | |
XSetInputFocus(dpy, root, RevertToPointerRoot, CurrentTime); |