diff -r c4ecdb5500f6 config.arg.h --- a/config.arg.h Thu Nov 30 09:19:52 2006 +0100 +++ b/config.arg.h Thu Nov 30 10:48:35 2006 +0100 @@ -46,15 +46,10 @@ static Key key[] = { \ { MODKEY|ShiftMask, XK_c, killclient, { 0 } }, \ { MODKEY, XK_space, togglemode, { 0 } }, \ { MODKEY|ShiftMask, XK_space, togglefloat, { 0 } }, \ - { MODKEY, XK_0, viewall, { 0 } }, \ - { MODKEY, XK_1, view, { .i = 0 } }, \ - { MODKEY, XK_2, view, { .i = 1 } }, \ - { MODKEY, XK_3, view, { .i = 2 } }, \ - { MODKEY, XK_4, view, { .i = 3 } }, \ - { MODKEY|ControlMask, XK_1, toggleview, { .i = 0 } }, \ - { MODKEY|ControlMask, XK_2, toggleview, { .i = 1 } }, \ - { MODKEY|ControlMask, XK_3, toggleview, { .i = 2 } }, \ - { MODKEY|ControlMask, XK_4, toggleview, { .i = 3 } }, \ + { MODKEY, XK_1, toggleview, { .i = 0 } }, \ + { MODKEY, XK_2, toggleview, { .i = 1 } }, \ + { MODKEY, XK_3, toggleview, { .i = 2 } }, \ + { MODKEY, XK_4, toggleview, { .i = 3 } }, \ { MODKEY|ShiftMask, XK_q, quit, { 0 } }, \ }; diff -r c4ecdb5500f6 config.default.h --- a/config.default.h Thu Nov 30 09:19:52 2006 +0100 +++ b/config.default.h Thu Nov 30 10:50:22 2006 +0100 @@ -43,17 +43,11 @@ static Key key[] = { \ { MODKEY|ShiftMask, XK_c, killclient, { 0 } }, \ { MODKEY, XK_space, togglemode, { 0 } }, \ { MODKEY|ShiftMask, XK_space, togglefloat, { 0 } }, \ - { MODKEY, XK_0, viewall, { 0 } }, \ - { MODKEY, XK_1, view, { .i = 0 } }, \ - { MODKEY, XK_2, view, { .i = 1 } }, \ - { MODKEY, XK_3, view, { .i = 2 } }, \ - { MODKEY, XK_4, view, { .i = 3 } }, \ - { MODKEY, XK_5, view, { .i = 4 } }, \ - { MODKEY|ControlMask, XK_1, toggleview, { .i = 0 } }, \ - { MODKEY|ControlMask, XK_2, toggleview, { .i = 1 } }, \ - { MODKEY|ControlMask, XK_3, toggleview, { .i = 2 } }, \ - { MODKEY|ControlMask, XK_4, toggleview, { .i = 3 } }, \ - { MODKEY|ControlMask, XK_5, toggleview, { .i = 4 } }, \ + { MODKEY, XK_1, toggleview, { .i = 0 } }, \ + { MODKEY, XK_2, toggleview, { .i = 1 } }, \ + { MODKEY, XK_3, toggleview, { .i = 2 } }, \ + { MODKEY, XK_4, toggleview, { .i = 3 } }, \ + { MODKEY, XK_5, toggleview, { .i = 4 } }, \ { MODKEY|ShiftMask, XK_q, quit, { 0 } }, \ }; diff -r c4ecdb5500f6 dwm.h --- a/dwm.h Thu Nov 30 09:19:52 2006 +0100 +++ b/dwm.h Thu Nov 30 10:48:12 2006 +0100 @@ -167,6 +167,4 @@ extern void togglefloat(Arg *arg); /* t extern void togglefloat(Arg *arg); /* toggles focusesd client between floating/non-floating state */ extern void togglemode(Arg *arg); /* toggles global arrange function (dotile/dofloat) */ extern void toggleview(Arg *arg); /* toggles the tag with arg's index (in)visible */ -extern void view(Arg *arg); /* views the tag with arg's index */ -extern void viewall(Arg *arg); /* views all tags, arg is ignored */ extern void zoom(Arg *arg); /* zooms the focused client to master area, arg is ignored */ diff -r c4ecdb5500f6 event.c --- a/event.c Thu Nov 30 09:19:52 2006 +0100 +++ b/event.c Thu Nov 30 10:49:25 2006 +0100 @@ -120,13 +120,11 @@ buttonpress(XEvent *e) { if(ev->state & MODKEY) tag(&a); else - view(&a); + toggleview(&a); } else if(ev->button == Button3) { if(ev->state & MODKEY) toggletag(&a); - else - toggleview(&a); } return; } diff -r c4ecdb5500f6 view.c --- a/view.c Thu Nov 30 09:19:52 2006 +0100 +++ b/view.c Thu Nov 30 10:48:04 2006 +0100 @@ -220,30 +220,23 @@ void void toggleview(Arg *arg) { unsigned int i; + Bool notag; + Client *c; seltag[arg->i] = !seltag[arg->i]; for(i = 0; i < ntags && !seltag[i]; i++); - if(i == ntags) - seltag[arg->i] = True; /* cannot toggle last view */ - arrange(); -} - -void -view(Arg *arg) { - unsigned int i; - - for(i = 0; i < ntags; i++) - seltag[i] = False; - seltag[arg->i] = True; - arrange(); -} - -void -viewall(Arg *arg) { - unsigned int i; - - for(i = 0; i < ntags; i++) - seltag[i] = True; + if(seltag[arg->i]) { + for(c = clients; c; c = c->next) { + notag = True; + for(i = 0; i < ntags; i++) + if(c->tags[i]) { + notag = False; + break; + } + if(notag) + c->tags[arg->i] = True; + } + } arrange(); }