t* dwm + patches
       
   URI git clone git://git.codevoid.de/dwm-sdk
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
   DIR commit 19da197f58bc005ad379d751f28f0a17cea3d3b8
   DIR parent 666fae97e67810089ffbddd019d655bc4f9f7838
   URI Author: Anselm R.Garbe <arg@10ksloc.org>
       Date:   Mon, 14 Aug 2006 16:59:18 +0200
       
       changed replacetag into toggletag
       
       Diffstat:
         M config.arg.h                        |      12 ++++++------
         M config.default.h                    |      20 ++++++++++----------
         M dwm.h                               |       6 +++---
         M tag.c                               |      65 +++++++++++++++++--------------
       
       4 files changed, 55 insertions(+), 48 deletions(-)
       ---
   DIR diff --git a/config.arg.h b/config.arg.h
       t@@ -33,17 +33,17 @@ static Key key[] = { \
                { MODKEY|ControlMask,                XK_1,                toggleview,        { .i = 0 } }, \
                { MODKEY|ControlMask,                XK_2,                toggleview,        { .i = 1 } }, \
                { MODKEY|ControlMask,                XK_3,                toggleview,        { .i = 2 } }, \
       -        { MODKEY|ShiftMask,                XK_1,                replacetag,        { .i = 0 } }, \
       -        { MODKEY|ShiftMask,                XK_2,                replacetag,        { .i = 1 } }, \
       -        { MODKEY|ShiftMask,                XK_3,                replacetag,        { .i = 2 } }, \
       +        { MODKEY|ShiftMask,                XK_1,                tag,                { .i = 0 } }, \
       +        { MODKEY|ShiftMask,                XK_2,                tag,                { .i = 1 } }, \
       +        { MODKEY|ShiftMask,                XK_3,                tag,                { .i = 2 } }, \
                { MODKEY|ShiftMask,                XK_c,                killclient,        { 0 } }, \
                { MODKEY|ShiftMask,                XK_q,                quit,                { 0 } }, \
                { MODKEY|ShiftMask,                XK_Return,        spawn, \
                        { .cmd = "exec urxvt +sb -tr -bg black -fg '#eeeeee' -cr '#eeeeee' +sb " \
                                "-fn '-*-terminus-medium-*-*-*-12-*-*-*-*-*-iso10646-*'" } }, \
       -        { MODKEY|ControlMask|ShiftMask,        XK_1,                appendtag,        { .i = 0 } }, \
       -        { MODKEY|ControlMask|ShiftMask,        XK_2,                appendtag,        { .i = 1 } }, \
       -        { MODKEY|ControlMask|ShiftMask,        XK_3,                appendtag,        { .i = 2 } }, \
       +        { MODKEY|ControlMask|ShiftMask,        XK_1,                toggletag,        { .i = 0 } }, \
       +        { MODKEY|ControlMask|ShiftMask,        XK_2,                toggletag,        { .i = 1 } }, \
       +        { MODKEY|ControlMask|ShiftMask,        XK_3,                toggletag,        { .i = 2 } }, \
        };
        
        #define RULES \
   DIR diff --git a/config.default.h b/config.default.h
       t@@ -34,19 +34,19 @@ static Key key[] = { \
                { MODKEY|ControlMask,                XK_2,                toggleview,        { .i = 2 } }, \
                { MODKEY|ControlMask,                XK_3,                toggleview,        { .i = 3 } }, \
                { MODKEY|ControlMask,                XK_4,                toggleview,        { .i = 4 } }, \
       -        { MODKEY|ShiftMask,                XK_0,                replacetag,        { .i = 0 } }, \
       -        { MODKEY|ShiftMask,                XK_1,                replacetag,        { .i = 1 } }, \
       -        { MODKEY|ShiftMask,                XK_2,                replacetag,        { .i = 2 } }, \
       -        { MODKEY|ShiftMask,                XK_3,                replacetag,        { .i = 3 } }, \
       -        { MODKEY|ShiftMask,                XK_4,                replacetag,        { .i = 4 } }, \
       +        { MODKEY|ShiftMask,                XK_0,                tag,                { .i = 0 } }, \
       +        { MODKEY|ShiftMask,                XK_1,                tag,                { .i = 1 } }, \
       +        { MODKEY|ShiftMask,                XK_2,                tag,                { .i = 2 } }, \
       +        { MODKEY|ShiftMask,                XK_3,                tag,                { .i = 3 } }, \
       +        { MODKEY|ShiftMask,                XK_4,                tag,                { .i = 4 } }, \
                { MODKEY|ShiftMask,                XK_c,                killclient,        { 0 } }, \
                { MODKEY|ShiftMask,                XK_q,                quit,                { 0 } }, \
                { MODKEY|ShiftMask,                XK_Return,        spawn,                { .cmd = "exec xterm" } }, \
       -        { MODKEY|ControlMask|ShiftMask,        XK_0,                appendtag,        { .i = 0 } }, \
       -        { MODKEY|ControlMask|ShiftMask,        XK_1,                appendtag,        { .i = 1 } }, \
       -        { MODKEY|ControlMask|ShiftMask,        XK_2,                appendtag,        { .i = 2 } }, \
       -        { MODKEY|ControlMask|ShiftMask,        XK_3,                appendtag,        { .i = 3 } }, \
       -        { MODKEY|ControlMask|ShiftMask,        XK_4,                appendtag,        { .i = 4 } }, \
       +        { MODKEY|ControlMask|ShiftMask,        XK_0,                toggletag,        { .i = 0 } }, \
       +        { MODKEY|ControlMask|ShiftMask,        XK_1,                toggletag,        { .i = 1 } }, \
       +        { MODKEY|ControlMask|ShiftMask,        XK_2,                toggletag,        { .i = 2 } }, \
       +        { MODKEY|ControlMask|ShiftMask,        XK_3,                toggletag,        { .i = 3 } }, \
       +        { MODKEY|ControlMask|ShiftMask,        XK_4,                toggletag,        { .i = 4 } }, \
        };
        
        #define RULES \
   DIR diff --git a/dwm.h b/dwm.h
       t@@ -116,19 +116,19 @@ extern void sendevent(Window w, Atom a, long value);
        extern int xerror(Display *dsply, XErrorEvent *ee);
        
        /* tag.c */
       -extern void appendtag(Arg *arg);
        extern void dofloat(Arg *arg);
        extern void dotile(Arg *arg);
        extern void initrregs();
        extern Bool isvisible(Client *c);
        extern Client *getnext(Client *c);
        extern Client *getprev(Client *c);
       -extern void replacetag(Arg *arg);
        extern void restack();
        extern void settags(Client *c);
       +extern void tag(Arg *arg);
        extern void togglemode(Arg *arg);
       -extern void view(Arg *arg);
       +extern void toggletag(Arg *arg);
        extern void toggleview(Arg *arg);
       +extern void view(Arg *arg);
        
        /* util.c */
        extern void *emallocz(unsigned int size);
   DIR diff --git a/tag.c b/tag.c
       t@@ -35,16 +35,6 @@ void (*arrange)(Arg *) = DEFMODE;
        /* extern */
        
        void
       -appendtag(Arg *arg)
       -{
       -        if(!sel)
       -                return;
       -
       -        sel->tags[arg->i] = True;
       -        settitle(sel);
       -}
       -
       -void
        dofloat(Arg *arg)
        {
                Client *c;
       t@@ -183,19 +173,6 @@ isvisible(Client *c)
        }
        
        void
       -replacetag(Arg *arg)
       -{
       -        int i;
       -
       -        if(!sel)
       -                return;
       -
       -        for(i = 0; i < ntags; i++)
       -                sel->tags[i] = False;
       -        appendtag(arg);
       -}
       -
       -void
        restack()
        {
                static unsigned int nwins = 0;
       t@@ -281,6 +258,20 @@ settags(Client *c)
        }
        
        void
       +tag(Arg *arg)
       +{
       +        unsigned int i;
       +
       +        if(!sel)
       +                return;
       +
       +        for(i = 0; i < ntags; i++)
       +                sel->tags[i] = False;
       +        sel->tags[arg->i] = True;
       +        settitle(sel);
       +}
       +
       +void
        togglemode(Arg *arg)
        {
                arrange = arrange == dofloat ? dotile : dofloat;
       t@@ -288,24 +279,40 @@ togglemode(Arg *arg)
        }
        
        void
       -view(Arg *arg)
       +toggletag(Arg *arg)
        {
                unsigned int i;
        
       -        for(i = 0; i < ntags; i++)
       -                seltag[i] = False;
       -        seltag[arg->i] = True;
       -        arrange(NULL);
       +        if(!sel)
       +                return;
       +
       +        sel->tags[arg->i] = !sel->tags[arg->i];
       +        for(i = 0; i < ntags && !sel->tags[i]; i++);
       +        if(i == ntags)
       +                sel->tags[arg->i] = True;
       +        settitle(sel);
        }
        
       +
        void
        toggleview(Arg *arg)
        {
                unsigned int i;
        
                seltag[arg->i] = !seltag[arg->i];
       -        for(i = 0; !seltag[i] && i < ntags; i++);
       +        for(i = 0; i < ntags && !seltag[i]; i++);
                if(i == ntags)
                        seltag[arg->i] = True; /* cannot toggle last view */
                arrange(NULL);
        }
       +
       +void
       +view(Arg *arg)
       +{
       +        unsigned int i;
       +
       +        for(i = 0; i < ntags; i++)
       +                seltag[i] = False;
       +        seltag[arg->i] = True;
       +        arrange(NULL);
       +}