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();
}