wmii

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

commit 03a80ed0d5ac792a1b94fc307e02b766ee69b25b
parent 407ed38930a0ba2272c2efde74587b81d6fe8007
Author: Anselm R. Garbe <garbeam@wmii.de>
Date:   Thu,  9 Mar 2006 02:43:20 +0100

bar now displays tags perfectly ;)


Diffstat:
cmd/wm/bar.c | 18+++++++++++-------
cmd/wm/fs.c | 25++++++-------------------
cmd/wm/wm.c | 3++-
cmd/wm/wm.h | 2+-
rc/wmiirc | 7++++---
5 files changed, 24 insertions(+), 31 deletions(-)

diff --git a/cmd/wm/bar.c b/cmd/wm/bar.c @@ -11,9 +11,9 @@ static int comp_label(const void *l1, const void *l2) { - Label *ll1 = (Label *)l1; - Label *ll2 = (Label *)l2; - return strcmp((const char *)ll1->name, (const char *)ll2->name); + Label *ll1 = *(Label **)l1; + Label *ll2 = *(Label **)l2; + return strcmp(ll1->name, ll2->name); } Label * @@ -31,8 +31,8 @@ get_label(char *name) l->color = def.sel; label = (Label **)cext_array_attach((void **)label, l, sizeof(Label *), &labelsz); nlabel++; - qsort(label, nlabel, sizeof(Label *), comp_label); + return l; } @@ -72,10 +72,14 @@ update_bar_geometry() void draw_bar() { - unsigned int i; + unsigned int i, iexp = 0; unsigned int w = 0; + Label *exp = name2label(expand); Draw d = { 0 }; + if(exp) + iexp = label2index(exp); + d.align = WEST; d.gc = gcbar; d.drawable = pmapbar; @@ -92,7 +96,7 @@ draw_bar() Label *l = label[i]; l->rect.x = l->rect.y = 0; l->rect.height = brect.height; - if(i == iexpand) + if(i == iexp) continue; l->rect.width = brect.height; if(strlen(l->data)) { @@ -115,7 +119,7 @@ draw_bar() label[i]->rect.width = brect.width - label[i]->rect.x; } else { - label[iexpand]->rect.width = brect.width - w; + label[iexp]->rect.width = brect.width - w; for(i = 1; i < nlabel; i++) label[i]->rect.x = label[i - 1]->rect.x + label[i - 1]->rect.width; } diff --git a/cmd/wm/fs.c b/cmd/wm/fs.c @@ -597,8 +597,7 @@ type2stat(Stat *stat, char *wname, Qid *dir) return mkstat(stat, dir, wname, 0, DMWRITE); break; case FsFexpand: - snprintf(buf, sizeof(buf), "%s", iexpand >= nlabel ? "nil" : label[iexpand]->name); - return mkstat(stat, dir, wname, strlen(buf), DMREAD | DMWRITE); + return mkstat(stat, dir, wname, strlen(expand), DMREAD | DMWRITE); break; case FsFdata: return mkstat(stat, dir, wname, (dir_i1 == nlabel) ? 0 : strlen(label[dir_i1]->data), DMREAD | DMWRITE); @@ -759,8 +758,6 @@ xremove(IXPConn *c, Fcall *fcall) /* now detach the label */ destroy_label(l); free(l); - if(iexpand >= nlabel) - iexpand = 0; draw_bar(); } break; @@ -1165,8 +1162,8 @@ xread(IXPConn *c, Fcall *fcall) } break; case FsFexpand: - fcall->count = strlen(iexpand >= nlabel ? "nil" : label[iexpand]->name); - memcpy(p, iexpand >= nlabel ? "nil" : label[iexpand]->name, fcall->count); + fcall->count = strlen(expand); + memcpy(p, expand, fcall->count); break; case FsFdata: if(i1 >= nlabel) @@ -1347,19 +1344,9 @@ xwrite(IXPConn *c, Fcall *fcall) } break; case FsFexpand: - { - Label *l; - if(fcall->count && fcall->count < 16) { - memcpy(buf, fcall->data, fcall->count); - buf[fcall->count] = 0; - if((l = name2label(buf))) { - iexpand = label2index(l); - draw_bar(); - break; - } - } - } - return Enofile; + memcpy(expand, fcall->data, fcall->count); + expand[fcall->count] = 0; + draw_bar(); break; case FsFdata: { diff --git a/cmd/wm/wm.c b/cmd/wm/wm.c @@ -308,10 +308,11 @@ main(int argc, char *argv[]) ctag = nil; client = nil; + expand[0] = 0; key = nil; keysz = nkey = 0; label = nil; - nlabel = labelsz = iexpand = 0; + nlabel = labelsz = 0; class = nil; nclass = classsz = 0; diff --git a/cmd/wm/wm.h b/cmd/wm/wm.h @@ -188,7 +188,7 @@ unsigned int nkey; Label **label; unsigned int nlabel; unsigned int labelsz; -unsigned int iexpand; +char expand[256]; char **ctag; unsigned int nctag; unsigned int ctagsz; diff --git a/rc/wmiirc b/rc/wmiirc @@ -99,7 +99,7 @@ do case "$type" in NT) wmiir create /bar/$1 - xwrite /bar/$1/colors $WMII_NORMCOLORS + xwrite /bar/$1/colors $WMII_SELCOLORS xwrite /bar/$1/data $1;; RT) wmiir remove /bar/$1;; @@ -108,9 +108,10 @@ do then : # no old tag label else - xwrite /bar/$old/data $old + xwrite /bar/$old/colors $WMII_SELCOLORS fi - xwrite /bar/$1/data '*'$1 + xwrite /bar/$1/data $1 + xwrite /bar/$1/colors $WMII_NORMCOLORS old=$1;; LB) if wmiir read /tags | awk "\$NF == $1 {exit 1}"