URI: 
       applied yiyus tagset patch - dwm - dynamic window manager
  HTML git clone https://git.parazyd.org/dwm
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
   DIR commit bfd6079a155c9429b7b963b678b4a83acab07cd2
   DIR parent 7f70d90219c4a33c79ff93b49fb24ee7a6f62b4d
  HTML Author: Anselm R Garbe <garbeam@gmail.com>
       Date:   Sun, 27 Apr 2008 18:33:31 +0100
       
       applied yiyus tagset patch
       Diffstat:
         M dwm.c                               |      37 +++++++++++++------------------
       
       1 file changed, 16 insertions(+), 21 deletions(-)
       ---
   DIR diff --git a/dwm.c b/dwm.c
       @@ -214,7 +214,7 @@ char stext[256];
        int screen, sx, sy, sw, sh;
        int (*xerrorxlib)(Display *, XErrorEvent *);
        int bx, by, bw, bh, blw, bgw, mx, my, mw, mh, mox, moy, mow, moh, tx, ty, tw, th, wx, wy, ww, wh;
       -int viewtags_set = 0;
       +int seltags = 0;
        double mfact;
        unsigned int numlockmask = 0;
        void (*handler[LASTEvent]) (XEvent *) = {
       @@ -234,8 +234,7 @@ void (*handler[LASTEvent]) (XEvent *) = {
        Atom wmatom[WMLast], netatom[NetLast];
        Bool otherwm, readin;
        Bool running = True;
       -Bool *seltags;
       -Bool *viewtags[2];
       +Bool *tagset[2];
        Client *clients = NULL;
        Client *sel = NULL;
        Client *stack = NULL;
       @@ -278,7 +277,7 @@ applyrules(Client *c) {
                if(ch.res_name)
                        XFree(ch.res_name);
                if(!matched)
       -                memcpy(c->tags, seltags, TAGSZ);
       +                memcpy(c->tags, tagset[seltags], TAGSZ);
        }
        
        void
       @@ -538,7 +537,7 @@ drawbar(void) {
                for(c = stack; c && !isvisible(c); c = c->snext);
                for(i = 0; i < LENGTH(tags); i++) {
                        dc.w = textw(tags[i]);
       -                if(seltags[i]) {
       +                if(tagset[seltags][i]) {
                                drawtext(tags[i], dc.sel, isurgent(i));
                                drawsquare(c && c->tags[i], isoccupied(i), isurgent(i), dc.sel);
                        }
       @@ -933,7 +932,7 @@ isvisible(Client *c) {
                unsigned int i;
        
                for(i = 0; i < LENGTH(tags); i++)
       -                if(c->tags[i] && seltags[i])
       +                if(c->tags[i] && tagset[seltags][i])
                                return True;
                return False;
        }
       @@ -1505,10 +1504,9 @@ setup(void) {
                        XSetFont(dpy, dc.gc, dc.font.xfont->fid);
        
                /* init tags */
       -        viewtags[0] = emallocz(TAGSZ);
       -        viewtags[1] = emallocz(TAGSZ);
       -        viewtags[0][0] = viewtags[1][0] = True;
       -        seltags = viewtags[0];
       +        tagset[0] = emallocz(TAGSZ);
       +        tagset[1] = emallocz(TAGSZ);
       +        tagset[0][0] = tagset[1][0] = True;
        
                /* init bar */
                for(blw = i = 0; LENGTH(layouts) > 1 && i < LENGTH(layouts); i++) {
       @@ -1701,10 +1699,10 @@ toggleview(const char *arg) {
                unsigned int i, j;
        
                i = idxoftag(arg);
       -        seltags[i] = !seltags[i];
       -        for(j = 0; j < LENGTH(tags) && !seltags[j]; j++);
       +        tagset[seltags][i] = !tagset[seltags][i];
       +        for(j = 0; j < LENGTH(tags) && !tagset[seltags][j]; j++);
                if(j == LENGTH(tags))
       -                seltags[i] = True; /* at least one tag must be viewed */
       +                tagset[seltags][i] = True; /* at least one tag must be viewed */
                arrange();
        }
        
       @@ -1837,18 +1835,15 @@ view(const char *arg) {
                        tmp[i] = (NULL == arg);
                tmp[idxoftag(arg)] = True;
        
       -        if(memcmp(seltags, tmp, TAGSZ) != 0) {
       -                seltags = viewtags[viewtags_set ^= 1];  /* toggle tagset */
       -                memcpy(seltags, tmp, TAGSZ);
       -                arrange();
       -        }
       -        else
       -                viewprevtag(NULL);
       +        seltags ^= 1; /* toggle sel tagset */
       +        if(memcmp(tagset[seltags ^ 1], tmp, TAGSZ) != 0)
       +                memcpy(tagset[seltags], tmp, TAGSZ);
       +        arrange();
        }
        
        void
        viewprevtag(const char *arg) {
       -        seltags = viewtags[viewtags_set ^= 1];  /* toggle tagset */
       +        seltags ^= 1; /* toggle sel tagset */
                arrange();
        }