]> Dogcows Code - chaz/openbox/blobdiff - render/font.c
popups fixes. if the text for the popup is empty now, there wont be extra padding...
[chaz/openbox] / render / font.c
index 1208e9ef687d38f9a6085a3072e067e16c9b27f3..1ca1b768f703be12e7626bdc7aa4c7dbe4a19f87 100644 (file)
@@ -137,7 +137,7 @@ static void font_measure_full(const RrFont *f, const gchar *str,
     pango_layout_set_text(f->layout, str, -1);
     pango_layout_set_width(f->layout, -1);
     pango_layout_get_pixel_extents(f->layout, NULL, &rect);
-    *x = rect.width + ABS(shadow_x);
+    *x = rect.width + ABS(shadow_x) + 4 /* we put a 2 px edge on each side */;
     *y = rect.height + ABS(shadow_y);
 }
 
@@ -221,6 +221,13 @@ void RrFontDraw(XftDraw *d, RrTextureText *t, RrRect *area)
 
     t->font->shortcut_underline->start_index = 0;
     t->font->shortcut_underline->end_index = 0;
+    /* the attributes are owned by the layout.
+       re-add the attributes to the layout after changing the
+       start and end index */
+    attrlist = pango_layout_get_attributes(t->font->layout);
+    pango_attr_list_ref(attrlist);
+    pango_layout_set_attributes(t->font->layout, attrlist);
+    pango_attr_list_unref(attrlist);
 
     if (t->shadow_offset_x || t->shadow_offset_y) {
         c.color.red = t->shadow_color->r | t->shadow_color->r << 8;
@@ -229,14 +236,6 @@ void RrFontDraw(XftDraw *d, RrTextureText *t, RrRect *area)
         c.color.alpha = 0xffff * t->shadow_alpha / 255;
         c.pixel = t->shadow_color->pixel;
 
-        /* the attributes are owned by the layout.
-           re-add the attributes to the layout after changing the
-           start and end index */
-        attrlist = pango_layout_get_attributes(t->font->layout);
-        pango_attr_list_ref(attrlist);
-        pango_layout_set_attributes(t->font->layout, attrlist);
-        pango_attr_list_unref(attrlist);
-
         /* see below... */
         pango_xft_render_layout_line
             (d, &c, pango_layout_get_line(t->font->layout, 0),
@@ -253,19 +252,17 @@ void RrFontDraw(XftDraw *d, RrTextureText *t, RrRect *area)
     if (t->shortcut) {
         const gchar *c = t->string + t->shortcut_pos;
 
-        if (g_utf8_validate(c, -1, NULL)) {
-            t->font->shortcut_underline->start_index = t->shortcut_pos;
-            t->font->shortcut_underline->end_index = t->shortcut_pos +
-                (g_utf8_next_char(c) - c);
-
-            /* the attributes are owned by the layout.
-               re-add the attributes to the layout after changing the
-               start and end index */
-            attrlist = pango_layout_get_attributes(t->font->layout);
-            pango_attr_list_ref(attrlist);
-            pango_layout_set_attributes(t->font->layout, attrlist);
-            pango_attr_list_unref(attrlist);
-        }
+        t->font->shortcut_underline->start_index = t->shortcut_pos;
+        t->font->shortcut_underline->end_index = t->shortcut_pos +
+            (g_utf8_next_char(c) - c);
+
+        /* the attributes are owned by the layout.
+           re-add the attributes to the layout after changing the
+           start and end index */
+        attrlist = pango_layout_get_attributes(t->font->layout);
+        pango_attr_list_ref(attrlist);
+        pango_layout_set_attributes(t->font->layout, attrlist);
+        pango_attr_list_unref(attrlist);
     }
 
     /* layout_line() uses y to specify the baseline
This page took 0.021197 seconds and 4 git commands to generate.