tupdate draw.c - dmenu - Dmenu fork with xft fonts.
 (HTM) git clone git://r-36.net/dmenu
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit f7cbe710a266448122d89a02b8ba8c70423fc750
 (DIR) parent 723cbabc122292cc87474fd203e199e392206640
 (HTM) Author: Connor Lane Smith <cls@lubutu.com>
       Date:   Sat, 18 Jun 2011 22:11:19 +0100
       
       update draw.c
       Diffstat:
         draw.c                              |      27 +++++++++++++--------------
         draw.h                              |       1 +
       
       2 files changed, 14 insertions(+), 14 deletions(-)
       ---
 (DIR) diff --git a/draw.c b/draw.c
       t@@ -120,24 +120,23 @@ initfont(DC *dc, const char *fontstr) {
        
        Bool
        loadfont(DC *dc, const char *fontstr) {
       -        char *def, **missing;
       -        int i, n;
       +        char *def, **missing, **names;
       +        int i, n = 1;
       +        XFontStruct **xfonts;
        
                if(!*fontstr)
                        return False;
       -        if((dc->font.set = XCreateFontSet(dc->dpy, fontstr, &missing, &n, &def))) {
       -                char **names;
       -                XFontStruct **xfonts;
       -
       +        if((dc->font.set = XCreateFontSet(dc->dpy, fontstr, &missing, &n, &def)))
                        n = XFontsOfFontSet(dc->font.set, &xfonts, &names);
       -                for(i = dc->font.ascent = dc->font.descent = 0; i < n; i++) {
       -                        dc->font.ascent = MAX(dc->font.ascent, xfonts[i]->ascent);
       -                        dc->font.descent = MAX(dc->font.descent, xfonts[i]->descent);
       -                }
       -        }
       -        else if((dc->font.xfont = XLoadQueryFont(dc->dpy, fontstr))) {
       -                dc->font.ascent = dc->font.xfont->ascent;
       -                dc->font.descent = dc->font.xfont->descent;
       +        else if((dc->font.xfont = XLoadQueryFont(dc->dpy, fontstr)))
       +                xfonts = &dc->font.xfont;
       +        else
       +                n = 0;
       +
       +        for(i = 0; i < n; i++) {
       +                dc->font.ascent  = MAX(dc->font.ascent,  xfonts[i]->ascent);
       +                dc->font.descent = MAX(dc->font.descent, xfonts[i]->descent);
       +                dc->font.width   = MAX(dc->font.width,   xfonts[i]->max_bounds.width);
                }
                if(missing)
                        XFreeStringList(missing);
 (DIR) diff --git a/draw.h b/draw.h
       t@@ -15,6 +15,7 @@ typedef struct {
                        int ascent;
                        int descent;
                        int height;
       +                int width;
                        XFontSet set;
                        XFontStruct *xfont;
                } font;