| 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); |