]> Dogcows Code - chaz/openbox/blobdiff - render/font.c
set a OB_ICONIFY_ALPHA define in misc.h for the 3 places to all use
[chaz/openbox] / render / font.c
index 166b9abb8182bafc8c782ca2f8a71931bdcff59e..48321aec63a24dd0abd7fef90925850085b2c952 100644 (file)
@@ -37,7 +37,8 @@ static void measure_font(const RrInstance *inst, RrFont *f)
     static PangoLanguage *lang = NULL;
 
     if (lang == NULL) {
-#if PANGO_VERSION_CHECK(1,16,0)
+#if PANGO_VERSION_MAJOR > 1 || \
+    (PANGO_VERSION_MAJOR == 1 && PANGO_VERSION_MINOR >= 16)
         lang = pango_language_get_default();
 #else
         gchar *locale, *p;
@@ -145,7 +146,19 @@ 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);
+
+    /* pango_layout_get_pixel_extents lies! this is the right way to get the
+       size of the text's area */
+    pango_layout_get_extents(f->layout, NULL, &rect);
+#if PANGO_VERSION_MAJOR > 1 || \
+    (PANGO_VERSION_MAJOR == 1 && PANGO_VERSION_MINOR >= 16)
+    /* pass the logical rect as the ink rect, this is on purpose so we get the
+       full area for the text */
+    pango_extents_to_pixels(&rect, NULL);
+#else
+    rect.width = (rect.width + PANGO_SCALE - 1) / PANGO_SCALE;
+    rect.height = (rect.height + PANGO_SCALE - 1) / PANGO_SCALE;
+#endif
     *x = rect.width + ABS(shadow_x) + 4 /* we put a 2 px edge on each side */;
     *y = rect.height + ABS(shadow_y);
 }
This page took 0.026694 seconds and 4 git commands to generate.