t* dwm + patches
       
   URI git clone git://git.codevoid.de/dwm-sdk
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
   DIR commit 29f2b15ddc3a1462780340a10738a98a5e9280eb
   DIR parent 7b65b763bc5ef74071b48192e7174ba8a103bee0
   URI Author: arg@suckless.org <unknown>
       Date:   Wed, 24 Oct 2007 16:07:43 +0200
       
       some cleanup, removed ntags variable, defined NTAGS macro, simplified tag(), view() and idxoftag(), fixed some NULL comparisions
       Diffstat:
         M dwm.c                               |      47 +++++++++++++------------------
       
       1 file changed, 20 insertions(+), 27 deletions(-)
       ---
   DIR diff --git a/dwm.c b/dwm.c
       t@@ -232,10 +232,9 @@ Regs *regs = NULL;
        /* configuration, allows nested code to access above variables */
        #include "config.h"
        
       -/* statically define the number of tags. */
       -unsigned int ntags = sizeof tags / sizeof tags[0];
       -Bool seltags[sizeof tags / sizeof tags[0]] = {[0] = True};
       -Bool prevtags[sizeof tags / sizeof tags[0]] = {[0] = True};
       +#define NTAGS (sizeof tags / sizeof tags[0])
       +Bool seltags[NTAGS] = {[0] = True};
       +Bool prevtags[NTAGS] = {[0] = True};
        
        /* function implementations */
        void
       t@@ -254,7 +253,7 @@ applyrules(Client *c) {
                for(i = 0; i < nrules; i++)
                        if(regs[i].propregex && !regexec(regs[i].propregex, buf, 1, &tmp, 0)) {
                                c->isfloating = rules[i].isfloating;
       -                        for(j = 0; regs[i].tagregex && j < ntags; j++) {
       +                        for(j = 0; regs[i].tagregex && j < NTAGS; j++) {
                                        if(!regexec(regs[i].tagregex, tags[j], 1, &tmp, 0)) {
                                                matched = True;
                                                c->tags[j] = True;
       t@@ -313,7 +312,7 @@ buttonpress(XEvent *e) {
        
                if(barwin == ev->window) {
                        x = 0;
       -                for(i = 0; i < ntags; i++) {
       +                for(i = 0; i < NTAGS; i++) {
                                x += textw(tags[i]);
                                if(ev->x < x) {
                                        if(ev->button == Button1) {
       t@@ -537,7 +536,7 @@ drawbar(void) {
                int i, x;
        
                dc.x = dc.y = 0;
       -        for(i = 0; i < ntags; i++) {
       +        for(i = 0; i < NTAGS; i++) {
                        dc.w = textw(tags[i]);
                        if(seltags[i]) {
                                drawtext(tags[i], dc.sel);
       t@@ -847,10 +846,8 @@ unsigned int
        idxoftag(const char *tag) {
                unsigned int i;
        
       -        for(i = 0; i < ntags; i++)
       -                if(tags[i] == tag)
       -                        return i;
       -        return 0;
       +        for(i = 0; (i < NTAGS) && (tags[i] != tag); i++);
       +        return (i < NTAGS) ? i : 0;
        }
        
        void
       t@@ -930,7 +927,7 @@ Bool
        isvisible(Client *c) {
                unsigned int i;
        
       -        for(i = 0; i < ntags; i++)
       +        for(i = 0; i < NTAGS; i++)
                        if(c->tags[i] && seltags[i])
                                return True;
                return False;
       t@@ -1140,7 +1137,7 @@ propertynotify(XEvent *e) {
                                default: break;
                                case XA_WM_TRANSIENT_FOR:
                                        XGetTransientForHint(dpy, c->win, &trans);
       -                                if(!c->isfloating && (c->isfloating = (getclient(trans) != NULL)))
       +                                if(!c->isfloating && (c->isfloating = (NULL != getclient(trans))))
                                                arrange();
                                        break;
                                case XA_WM_NORMAL_HINTS:
       t@@ -1542,11 +1539,9 @@ tag(const char *arg) {
        
                if(!sel)
                        return;
       -        for(i = 0; i < ntags; i++)
       -                sel->tags[i] = arg == NULL;
       -        i = idxoftag(arg);
       -        if(i >= 0 && i < ntags)
       -                sel->tags[i] = True;
       +        for(i = 0; i < NTAGS; i++)
       +                sel->tags[i] = (NULL == arg);
       +        sel->tags[idxoftag(arg)] = True;
                arrange();
        }
        
       t@@ -1662,9 +1657,9 @@ toggletag(const char *arg) {
                        return;
                i = idxoftag(arg);
                sel->tags[i] = !sel->tags[i];
       -        for(j = 0; j < ntags && !sel->tags[j]; j++);
       -        if(j == ntags)
       -                sel->tags[i] = True;
       +        for(j = 0; j < NTAGS && !sel->tags[j]; j++);
       +        if(j == NTAGS)
       +                sel->tags[i] = True; /* at least one tag must be enabled */
                arrange();
        }
        
       t@@ -1674,8 +1669,8 @@ toggleview(const char *arg) {
        
                i = idxoftag(arg);
                seltags[i] = !seltags[i];
       -        for(j = 0; j < ntags && !seltags[j]; j++);
       -        if(j == ntags)
       +        for(j = 0; j < NTAGS && !seltags[j]; j++);
       +        if(j == NTAGS)
                        seltags[i] = True; /* at least one tag must be viewed */
                arrange();
        }
       t@@ -1841,11 +1836,9 @@ view(const char *arg) {
                unsigned int i;
        
                memcpy(prevtags, seltags, sizeof seltags);
       -        for(i = 0; i < ntags; i++)
       +        for(i = 0; i < NTAGS; i++)
                        seltags[i] = arg == NULL;
       -        i = idxoftag(arg);
       -        if(i >= 0 && i < ntags)
       -                seltags[i] = True;
       +        seltags[idxoftag(arg)] = True;
                arrange();
        }