commit 334694882636db39b2b82e8344ab5f62c4db25ae
parent 3e60262324fd5583c3e773fb94677d89b8124ee0
Author: Denis Grelich <denisg@suckless.org>
Date: Thu, 4 Jan 2007 02:22:07 +0100
tags and view names '.', '..' and '/' are now caught in wmiiwm
Diffstat:
3 files changed, 10 insertions(+), 6 deletions(-)
diff --git a/client.c b/client.c
@@ -699,6 +699,7 @@ apply_tags(Client *c, const char *tags) {
char *toks[32];
strncpy(buf, tags, sizeof(buf));
+ trim(buf, " \t/");
if(!(n = ixp_tokenize(toks, 31, buf, '+')))
return;
for(i=0, j=0; i < n; i++) {
@@ -706,13 +707,15 @@ apply_tags(Client *c, const char *tags) {
c->floating = True;
else if(!strncmp(toks[i], "!", 2))
toks[j++] = view ? screen->sel->name : "NULL";
- else if(strncmp(toks[i], "sel", 4))
+ else if(strncmp(toks[i], "sel", 4)
+ && strncmp(toks[i], ".", 2)
+ && strncmp(toks[i], "..", 3))
toks[j++] = toks[i];
}
c->tags[0] = '\0';
qsort(toks, j, sizeof(char *), compare_tags);
len = sizeof(c->tags);
- if(!j) toks[j++] = "NULL";
+ if(!j) return;
for(i=0, n=0; i < j && len > 1; i++)
if(!n || strcmp(toks[i], toks[n-1])) {
if(i)
diff --git a/rc/wmiirc b/rc/wmiirc
@@ -20,8 +20,7 @@ conf_which () {
tagsmenu() {
tag=`wmiir read /tag/sel/ctl`
- tags=`wmiir ls /tag | sed 's|/||; /^sel$/d' | awk "BEGIN{print \"$tag\"} !/^$tag\$/" | $DMENU \
- | sed 's/^\.\.\?$//; s/^\.\.\?+//g; s/+\.\.\?$//g; s/+\.\.\?+/+/g; s/\W//'`
+ tags=`wmiir ls /tag | sed 's|/||; /^sel$/d' | awk "BEGIN{print \"$tag\"} !/^$tag\$/" | $DMENU`
test -n "$tags" && xwrite $@ "$tags"
}
diff --git a/view.c b/view.c
@@ -135,10 +135,12 @@ select_view(const char *arg) {
char buf[256];
strncpy(buf, arg, sizeof(buf));
- trim(buf, " \t+");
+ trim(buf, " \t+/");
if(!strlen(buf))
return;
- assign_sel_view(get_view(arg));
+ if(!strncmp(buf, ".", 2) || !strncmp(buf, "..", 3))
+ return;
+ assign_sel_view(get_view(buf));
update_views(); /* performs focus_view */
}