wmii

git clone git://oldgit.suckless.org/wmii/
Log | Files | Refs | README | LICENSE

commit e2e18a8d766a2da36f0d480f8182acf2a27ef282
parent 4952030390aac9d2b8b8a7c1e76d45c2c8c2fb5c
Author: Anselm R. Garbe <garbeam@wmii.de>
Date:   Wed, 15 Mar 2006 16:28:13 +0100

some other simplifications


Diffstat:
cmd/wm/tag.c | 31++++++++++++++++++++++++-------
1 file changed, 24 insertions(+), 7 deletions(-)

diff --git a/cmd/wm/tag.c b/cmd/wm/tag.c @@ -171,10 +171,20 @@ Createtag: return t; } +static Bool +hasclient(Tag *t) +{ + unsigned int i; + for(i = 0; i < t->narea; i++) + if(t->area[i]->nframe) + return True; + return False; +} + void select_tag(char *arg) { - int i, j, n; + int i; Client *c; Tag *t = get_tag(arg); @@ -191,15 +201,12 @@ select_tag(char *arg) } focus_tag(t); - for(i = 0; i < ntag; i++) { - n = 0; - for(j = 0; j < tag[i]->narea; j++) - n += tag[i]->area[j]->nframe; - if(!n) { + /* cleanup on select */ + for(i = 0; i < ntag; i++) + if(!hasclient(tag[i])) { destroy_tag(tag[i]); i--; } - } if((c = sel_client_of_tag(t))) focus_client(c); @@ -237,6 +244,16 @@ update_tags() } } + for(i = 0; i < ntag; i++) + if(hasclient(tag[i])) { + tags2str(buf, sizeof(buf), tag[i]->tag, tag[i]->ntag); + if(!istag(newctag, nnewctag, buf)) { + newctag = (char **)cext_array_attach((void **)newctag, strdup(client[i]->tag[j]), + sizeof(char *), &newctagsz); + nnewctag++; + } + } + /* propagate tagging events */ for(i = 0; i < nnewctag; i++) if(!istag(ctag, nctag, newctag[i])) {