Hi again,

unfortunately, I attached the wrong patch. See the attached one for a correct
version with barfont appearing in /ctl aswell.

Best regards,
Michael
diff --git a/cmd/wmii/bar.c b/cmd/wmii/bar.c
index a8b683d..3ddccfa 100644
--- a/cmd/wmii/bar.c
+++ b/cmd/wmii/bar.c
@@ -20,7 +20,7 @@ bar_init(WMScreen *s) {
        }
 
        s->brect = s->r;
-       s->brect.min.y = s->brect.max.y - labelh(def.font);
+       s->brect.min.y = s->brect.max.y - labelh(def.barfont);
 
        wa.override_redirect = 1;
        wa.background_pixmap = ParentRelative;
@@ -42,7 +42,7 @@ void
 bar_resize(WMScreen *s) {
 
        s->brect = s->r;
-       s->brect.min.y = s->r.max.y - labelh(def.font);
+       s->brect.min.y = s->r.max.y - labelh(def.barfont);
        reshapewin(s->barwin, s->brect);
        /* FIXME: view_arrange. */
 }
@@ -126,9 +126,9 @@ bar_draw(WMScreen *s) {
        foreach_bar(s, b) {
                b->r.min = ZP;
                b->r.max.y = Dy(s->brect);
-               b->r.max.x = def.font->height & ~1;
+               b->r.max.x = def.barfont->height & ~1;
                if(b->text && strlen(b->text))
-                       b->r.max.x += textwidth(def.font, b->text);
+                       b->r.max.x += textwidth(def.barfont, b->text);
                width += Dx(b->r);
        }
 
@@ -174,7 +174,7 @@ bar_draw(WMScreen *s) {
                if(b == s->bar[BRight])
                        align = East;
                fill(disp.ibuf, b->r, b->col.bg);
-               drawstring(disp.ibuf, def.font, b->r, align, b->text, 
b->col.fg);
+               drawstring(disp.ibuf, def.barfont, b->r, align, b->text, 
b->col.fg);
                border(disp.ibuf, b->r, 1, b->col.border);
        }
        copyimage(s->barwin, r, disp.ibuf, ZP);
diff --git a/cmd/wmii/dat.h b/cmd/wmii/dat.h
index 3414e6e..3346dbd 100644
--- a/cmd/wmii/dat.h
+++ b/cmd/wmii/dat.h
@@ -18,6 +18,7 @@
 #include <x11.h>
 
 #define FONT           "-*-fixed-medium-r-*-*-13-*-*-*-*-*-*-*"
+#define BARFONT                "-*-fixed-medium-r-*-*-13-*-*-*-*-*-*-*"
 #define FOCUSCOLORS    "#ffffff #335577 #447799"
 #define NORMCOLORS     "#222222 #eeeeee #666666"
 
@@ -308,6 +309,7 @@ EXTERN struct {
        CTuple  focuscolor;
        CTuple  normcolor;
        Font*   font;
+       Font*   barfont;
        char*   keys;
        uint    keyssz;
        Ruleset tagrules;
diff --git a/cmd/wmii/main.c b/cmd/wmii/main.c
index 43eb285..6c4f435 100644
--- a/cmd/wmii/main.c
+++ b/cmd/wmii/main.c
@@ -396,6 +396,7 @@ extern int fmtevent(Fmt*);
        def.border = 1;
        def.colmode = Colstack;
        def.font = loadfont(FONT);
+       def.barfont = loadfont(BARFONT);
        def.incmode = ISqueeze;
 
        def.mod = Mod1Mask;
diff --git a/cmd/wmii/message.c b/cmd/wmii/message.c
index cf339e5..6d4e273 100644
--- a/cmd/wmii/message.c
+++ b/cmd/wmii/message.c
@@ -27,6 +27,7 @@ enum {
        LFULLSCREEN,
        LURGENT,
        LBAR,
+       LBARFONT,
        LBORDER,
        LCLIENT,
        LCOLMODE,
@@ -60,6 +61,7 @@ char *symtab[] = {
        "Fullscreen",
        "Urgent",
        "bar",
+       "barfont",
        "border",
        "client",
        "colmode",
@@ -459,6 +461,17 @@ message_root(void *p, IxpMsg *m) {
                        return Ebadvalue;
                view_update(selview);
                break;
+       case LBARFONT:
+               fn = loadfont(m->pos);
+               if(fn) {
+                       freefont(def.barfont);
+                       def.barfont = fn;
+                       for(n=0; n < nscreens; n++)
+                               bar_resize(screens[n]);
+               }else
+                       ret = "can't load font";
+               view_update(selview);
+               break;
        case LBORDER:
                if(!getulong(msg_getword(m), &n))
                        return Ebadvalue;
@@ -554,6 +567,7 @@ readctl_root(void) {
                bufprint("\n");
        }
        bufprint("focuscolors %s\n", def.focuscolor.colstr);
+       bufprint("barfont %s\n", def.barfont->name);
        bufprint("font %s\n", def.font->name);
        bufprint("grabmod %s\n", def.grabmod);
        bufprint("incmode %s\n", incmodetab[screen->barpos]);

Attachment: pgp9kOAgfainI.pgp
Description: PGP signature

Reply via email to