On Thu, Nov 30, 2006 at 11:54:20AM +0100, Sander van Dijk wrote:
> Hello,
> 
> On 11/30/06, Enno Gottox Boland <[EMAIL PROTECTED]> wrote:
> >The idea is to tag them to the selected tag, when the user views a tag 
> >again.
> 
> I know, but where do these windows go in the meantime? Are they on
> screen, or invisible? Tagging them with the first tag the user views
> after this situation seems kind of arbitrary to me (what indication is
> there that this window has any relation with the group I'm selecting
> for viewing?).

They are invisible until a tag is selected again. However, I
think it will be rare that one untoggles all tags.

See attached patch to check it live.

Regards,
-- 
 Anselm R. Garbe >< http://suckless.org/~arg/ >< GPG key: 0D73F361
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();
 }
 

Reply via email to