tsome polishing in tileh/tilev - dwm - [fork] customized build of dwm, the dynamic window manager
 (HTM) git clone git://src.adamsgaard.dk/dwm
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 831428b00cf0bb6c7830c2178c8d13213f29b2db
 (DIR) parent 69439715c09ac36fe94f3cb7b1ed87149fc5ecff
 (HTM) Author: Anselm R Garbe <garbeam@gmail.com>
       Date:   Thu, 13 Mar 2008 13:59:40 +0000
       
       some polishing in tileh/tilev
       Diffstat:
         M dwm.c                               |     102 +++++++++++++++----------------
       
       1 file changed, 50 insertions(+), 52 deletions(-)
       ---
 (DIR) diff --git a/dwm.c b/dwm.c
       t@@ -117,6 +117,7 @@ void cleanup(void);
        void configure(Client *c);
        void configurenotify(XEvent *e);
        void configurerequest(XEvent *e);
       +unsigned int counttiled(void);
        void destroynotify(XEvent *e);
        void detach(Client *c);
        void detachstack(Client *c);
       t@@ -170,7 +171,8 @@ unsigned int textnw(const char *text, unsigned int len);
        unsigned int textw(const char *text);
        void tileh(void);
        void tilehstack(unsigned int n);
       -unsigned int tilemaster(void);
       +Client *tilemaster(unsigned int n);
       +void tileresize(Client *c, int x, int y, int w, int h);
        void tilev(void);
        void tilevstack(unsigned int n);
        void togglefloating(const char *arg);
       t@@ -458,6 +460,15 @@ configurerequest(XEvent *e) {
                XSync(dpy, False);
        }
        
       +unsigned int
       +counttiled(void) {
       +        unsigned int n;
       +        Client *c;
       +
       +        for(n = 0, c = nexttiled(clients); c; c = nexttiled(c->next), n++);
       +        return n;
       +}
       +
        void
        destroynotify(XEvent *e) {
                Client *c;
       t@@ -1579,89 +1590,76 @@ textw(const char *text) {
        }
        
        void
       -tileresize(Client *c, int x, int y, int w, int h) {
       -        resize(c, x, y, w, h, RESIZEHINTS);
       -        if((RESIZEHINTS) && ((c->h < bh) || (c->h > h) || (c->w < bh) || (c->w > w)))
       -                /* client doesn't accept size constraints */
       -                resize(c, x, y, w, h, False);
       -}
       -
       -void
        tileh(void) {
       -        tilehstack(tilemaster());
       -}
       -
       -void
       -tilehstack(unsigned int n) {
       -        int i, x, w;
       +        int x, w;
       +        unsigned int i, n = counttiled();
                Client *c;
        
                if(n == 0)
                        return;
       +        c = tilemaster(n);
       +        if(--n == 0)
       +                return;
        
                x = tx;
                w = tw / n;
                if(w < bh)
                        w = tw;
        
       -        for(i = 0, c = nexttiled(clients); c; c = nexttiled(c->next), i++)
       -                if(i > 0) {
       -                        if(i > 1 && i == n) /* remainder */
       -                                tileresize(c, x, ty, (tx + tw) - x - 2 * c->border,
       -                                              th - 2 * c->border);
       -                        else
       -                                tileresize(c, x, ty, w - 2 * c->border,
       -                                              th - 2 * c->border);
       -                        if(w != tw)
       -                                x = c->x + c->w + 2 * c->border;
       -                }
       +        for(i = 0, c = nexttiled(c->next); c; c = nexttiled(c->next), i++) {
       +                if(i + 1 == n) /* remainder */
       +                        tileresize(c, x, ty, (tx + tw) - x - 2 * c->border, th - 2 * c->border);
       +                else
       +                        tileresize(c, x, ty, w - 2 * c->border, th - 2 * c->border);
       +                if(w != tw)
       +                        x = c->x + c->w + 2 * c->border;
       +        }
        }
        
       -unsigned int
       -tilemaster(void) {
       -        unsigned int n;
       -        Client *c, *mc;
       +Client *
       +tilemaster(unsigned int n) {
       +        Client *c = nexttiled(clients);
        
       -        for(n = 0, mc = c = nexttiled(clients); c; c = nexttiled(c->next))
       -                n++;
       -        if(n == 0)
       -                return 0;
                if(n == 1)
       -                tileresize(mc, mox, moy, mow - 2 * mc->border, moh - 2 * mc->border);
       +                tileresize(c, mox, moy, mow - 2 * c->border, moh - 2 * c->border);
                else
       -                tileresize(mc, mx, my, mw - 2 * mc->border, mh - 2 * mc->border);
       -        return n - 1;
       +                tileresize(c, mx, my, mw - 2 * c->border, mh - 2 * c->border);
       +        return c;
        }
        
        void
       -tilev(void) {
       -        tilevstack(tilemaster());
       +tileresize(Client *c, int x, int y, int w, int h) {
       +        resize(c, x, y, w, h, RESIZEHINTS);
       +        if((RESIZEHINTS) && ((c->h < bh) || (c->h > h) || (c->w < bh) || (c->w > w)))
       +                /* client doesn't accept size constraints */
       +                resize(c, x, y, w, h, False);
        }
        
        void
       -tilevstack(unsigned int n) {
       -        int i, y, h;
       +tilev(void) {
       +        int y, h;
       +        unsigned int i, n = counttiled();
                Client *c;
        
                if(n == 0)
                        return;
       +        c = tilemaster(n);
       +        if(--n == 0)
       +                return;
        
                y = ty;
                h = th / n;
                if(h < bh)
                        h = th;
        
       -        for(i = 0, c = nexttiled(clients); c; c = nexttiled(c->next), i++)
       -                if(i > 0) {
       -                        if(i > 1 && i == n) /* remainder */
       -                                tileresize(c, tx, y, tw - 2 * c->border,
       -                                              (ty + th) - y - 2 * c->border);
       -                        else
       -                                tileresize(c, tx, y, tw - 2 * c->border,
       -                                              h - 2 * c->border);
       -                        if(h != th)
       -                                y = c->y + c->h + 2 * c->border;
       -                }
       +        for(i = 0, c = nexttiled(c->next); c; c = nexttiled(c->next), i++) {
       +                if(i + 1 == n) /* remainder */
       +                        tileresize(c, tx, y, tw - 2 * c->border, (ty + th) - y - 2 * c->border);
       +                else
       +                        tileresize(c, tx, y, tw - 2 * c->border, h - 2 * c->border);
       +                if(h != th)
       +                        y = c->y + c->h + 2 * c->border;
       +        }
        }
        
        void