tsmall bugfix - dwm - [fork] customized build of dwm, the dynamic window manager | |
git clone git://src.adamsgaard.dk/dwm | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit b32cd4454b4608c29699e8e0215a5107ce357679 | |
parent 9e56e1ded6889335035c8ffbe2763d3d83978673 | |
Author: Anselm R. Garbe <[email protected]> | |
Date: Mon, 13 Aug 2007 20:10:44 +0200 | |
small bugfix | |
Diffstat: | |
M tag.c | 28 +++++++++++++++++++--------- | |
1 file changed, 19 insertions(+), 9 deletions(-) | |
--- | |
diff --git a/tag.c b/tag.c | |
t@@ -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 | |
t@@ -77,7 +89,6 @@ settags(Client *c, Client *trans) { | |
if(matched) { | |
for(i = 0; i < ntags; i++) | |
c->tags[i] = trans->tags[i]; | |
- return; | |
} | |
else { | |
/* check if window has set a property */ | |
t@@ -91,8 +102,8 @@ settags(Client *c, Client *trans) { | |
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", | |
t@@ -116,6 +127,7 @@ settags(Client *c, Client *trans) { | |
if(!matched) | |
for(i = 0; i < ntags; i++) | |
c->tags[i] = seltag[i]; | |
+ persisttags(c); | |
} | |
void | |
t@@ -129,12 +141,8 @@ tag(const char *arg) { | |
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, PropMode… | |
- } | |
+ if(sel) | |
+ persisttags(sel); | |
arrange(); | |
} | |
t@@ -149,6 +157,8 @@ toggletag(const char *arg) { | |
for(j = 0; j < ntags && !sel->tags[j]; j++); | |
if(j == ntags) | |
sel->tags[i] = True; | |
+ if(sel) | |
+ persisttags(sel); | |
arrange(); | |
} | |