t* dwm + patches
       
   URI git clone git://git.codevoid.de/dwm-sdk
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
   DIR commit c1c6fdc5d8fef1247ac28e08ecc4d883095d1666
   DIR parent 9a4d07d9de31c7bf3fba83c66d1a09d63848adfc
   URI Author: Anselm R Garbe <garbeam@gmail.com>
       Date:   Sat,  6 Sep 2008 09:21:32 +0100
       
       applied Donald Chai's showhide patch in slightly modified ways
       Diffstat:
         M dwm.c                               |      28 ++++++++++++++++------------
       
       1 file changed, 16 insertions(+), 12 deletions(-)
       ---
   DIR diff --git a/dwm.c b/dwm.c
       t@@ -180,6 +180,7 @@ static void setclientstate(Client *c, long state);
        static void setlayout(const Arg *arg);
        static void setmfact(const Arg *arg);
        static void setup(void);
       +static void showhide(Client *c);
        static void spawn(const Arg *arg);
        static void tag(const Arg *arg);
        static int textnw(const char *text, unsigned int len);
       t@@ -271,18 +272,8 @@ applyrules(Client *c) {
        
        void
        arrange(void) {
       -        Client *c;
       -
       -        for(c = clients; c; c = c->next)
       -                if(ISVISIBLE(c)) {
       -                        XMoveWindow(dpy, c->win, c->x, c->y);
       -                        if(!lt[sellt]->arrange || c->isfloating)
       -                                resize(c, c->x, c->y, c->w, c->h, True);
       -                }
       -                else {
       -                        XMoveWindow(dpy, c->win, c->x + 2 * sw, c->y);
       -                }
       -
       +        if(stack)
       +                showhide(stack);
                focus(NULL);
                if(lt[sellt]->arrange)
                        lt[sellt]->arrange();
       t@@ -1377,6 +1368,19 @@ setup(void) {
        }
        
        void
       +showhide(Client *c) {
       +        if(ISVISIBLE(c)) { /* show clients top down */
       +                XMoveWindow(dpy, c->win, c->x, c->y);
       +                if(!lt[sellt]->arrange || c->isfloating)
       +                        resize(c, c->x, c->y, c->w, c->h, True);
       +        }
       +        if(c->snext) /* hide clients bottom up */
       +                showhide(c->snext);
       +        if(!ISVISIBLE(c))
       +                XMoveWindow(dpy, c->win, c->x + 2 * sw, c->y);
       +}
       +
       +void
        spawn(const Arg *arg) {
                /* The double-fork construct avoids zombie processes and keeps the code
                 * clean from stupid signal handlers. */