]> Dogcows Code - chaz/openbox/blobdiff - render/font.c
make openbox base-dir spec compliant, and change the theme dir structure, so that...
[chaz/openbox] / render / font.c
index 67e19ec240831874c73eb4fc629e6d6d4f81cbf5..00f456fc71a5b9ec4a53422c6729ce64ffa1088a 100644 (file)
@@ -2,9 +2,7 @@
 #include "color.h"
 #include "mask.h"
 #include "theme.h"
-#include "kernel/geom.h"
-#include "kernel/gettext.h"
-#define _(str) gettext(str)
+#include "gettext.h"
 
 #include <X11/Xft/Xft.h>
 #include <glib.h>
@@ -30,7 +28,7 @@ static gboolean started = FALSE;
 static void font_startup(void)
 {
     if (!XftInit(0)) {
-        g_warning(_("Couldn't initialize Xft.\n"));
+        g_warning(_("Couldn't initialize Xft."));
         exit(EXIT_FAILURE);
     }
     FcNameRegisterObjectTypes(objs, (sizeof(objs) / sizeof(objs[0])));
@@ -58,6 +56,7 @@ static RrFont *openfont(const RrInstance *inst, char *fontstring)
         return NULL;
 
     match = XftFontMatch(RrDisplay(inst), RrScreen(inst), pat, &res);
+    FcPatternDestroy(pat);
     if (!match)
         return NULL;
 
@@ -135,7 +134,7 @@ int RrFontMeasureString(const RrFont *f, const gchar *str)
 {
     gint x, y;
     font_measure_full (f, str, &x, &y);
-    return x;
+    return x + 4;
 }
 
 int RrFontHeight(const RrFont *f)
@@ -149,12 +148,12 @@ int RrFontMaxCharWidth(const RrFont *f)
     return (signed) f->xftfont->max_advance_width;
 }
 
-void RrFontDraw(XftDraw *d, RrTextureText *t, Rect *area)
+void RrFontDraw(XftDraw *d, RrTextureText *t, RrRect *area)
 {
     gint x,y,w,h;
     XftColor c;
     GString *text;
-    gint mw, em, mh;
+    gint mw, mh;
     size_t l;
     gboolean shortened = FALSE;
 
@@ -173,12 +172,11 @@ void RrFontDraw(XftDraw *d, RrTextureText *t, Rect *area)
         shortened = TRUE;
         /* remove a character from the middle */
         text = g_string_erase(text, l-- / 2, 1);
-        em = ELIPSES_LENGTH(t->font);
         /* if the elipses are too large, don't show them at all */
-        if (em > area->width)
+        if (ELIPSES_LENGTH(t->font) > area->width)
             shortened = FALSE;
         font_measure_full(t->font, text->str, &mw, &mh);
-        mw += em;
+        mw += ELIPSES_LENGTH(t->font);
     }
     if (shortened) {
         text = g_string_insert(text, (l + 1) / 2, ELIPSES);
@@ -228,5 +226,7 @@ void RrFontDraw(XftDraw *d, RrTextureText *t, Rect *area)
     XftDrawStringUtf8(d, &c, t->font->xftfont, x,
                       t->font->xftfont->ascent + y,
                       (FcChar8*)text->str, l);
+
+    g_string_free(text, TRUE);
     return;
 }
This page took 0.022373 seconds and 4 git commands to generate.