X-Git-Url: https://jasonwoof.com/gitweb/?a=blobdiff_plain;f=view.c;h=37b4fd71c71c2d696ade54574c22dcc071f4b929;hb=6d22782e8f991a99f9adef56b2b729e5ab5454d2;hp=3270160d2e1d72022c728d66dba7f50cc4eeba2f;hpb=9d739090750ffb3b3a64e86e2331215b8901c360;p=dwm.git diff --git a/view.c b/view.c index 3270160..37b4fd7 100644 --- a/view.c +++ b/view.c @@ -3,31 +3,39 @@ * See LICENSE file for license details. */ #include "dwm.h" +#include /* 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->next); - 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 */ @@ -257,7 +265,6 @@ void view(Arg *arg) { unsigned int i; - Client *c; for(i = 0; i < ntags; i++) seltag[i] = False; @@ -267,6 +274,17 @@ view(Arg *arg) } void +viewall(Arg *arg) +{ + unsigned int i; + + for(i = 0; i < ntags; i++) + seltag[i] = True; + reorder(); + arrange(NULL); +} + +void zoom(Arg *arg) { Client *c = sel;