small bugfix
Anselm R. Garbe garbeam@gmail.com
Mon, 13 Aug 2007 20:10:44 +0200
1 files changed,
19 insertions(+),
9 deletions(-)
jump to
M
tag.c
→
tag.c
@@ -27,6 +27,18 @@ static Regs *regs = NULL;
static unsigned int nrules = 0; static char prop[512]; +static void +persisttags(Client *c) +{ + unsigned int i; + + for(i = 0; i < ntags && i < sizeof prop - 1; i++) + prop[i] = c->tags[i] ? '+' : '-'; + prop[i] = '\0'; + XChangeProperty(dpy, c->win, dwmtags, XA_STRING, 8, + PropModeReplace, (unsigned char *)prop, i); +} + /* extern */ void@@ -77,7 +89,6 @@
if(matched) { for(i = 0; i < ntags; i++) c->tags[i] = trans->tags[i]; - return; } else { /* check if window has set a property */@@ -91,8 +102,8 @@ for(i = 0; i < ntags && i < sizeof prop - 1 && prop[i] != '\0'; i++)
if((c->tags[i] = prop[i] == '+')) matched = True; } - if(matched) - return; + } + if(!matched) { /* rule matching */ XGetClassHint(dpy, c->win, &ch); snprintf(prop, sizeof prop, "%s:%s:%s",@@ -116,6 +127,7 @@ }
if(!matched) for(i = 0; i < ntags; i++) c->tags[i] = seltag[i]; + persisttags(c); } void@@ -129,12 +141,8 @@ sel->tags[i] = arg == NULL;
i = arg ? atoi(arg) : 0; if(i >= 0 && i < ntags) sel->tags[i] = True; - if(sel) { - for(i = 0; i < ntags && i < sizeof prop - 1; i++) - prop[i] = sel->tags[i] ? '+' : '-'; - prop[i] = '\0'; - XChangeProperty(dpy, sel->win, dwmtags, XA_STRING, 8, PropModeReplace, (unsigned char *)prop, i); - } + if(sel) + persisttags(sel); arrange(); }@@ -149,6 +157,8 @@ sel->tags[i] = !sel->tags[i];
for(j = 0; j < ntags && !sel->tags[j]; j++); if(j == ntags) sel->tags[i] = True; + if(sel) + persisttags(sel); arrange(); }