]> git.sur5r.net Git - i3/i3/commitdiff
Fix incorrect y-offset for text in i3bar (2) 1549/head
authorshdown <shdownnine@gmail.com>
Sun, 15 Mar 2015 07:32:17 +0000 (10:32 +0300)
committershdown <shdownnine@gmail.com>
Sun, 15 Mar 2015 07:32:17 +0000 (10:32 +0300)
014aa7ff7441a8a2bb53bd0956aff61faaf6f37f fixed incorrect align of small
symbols, but also introduced a problem with texts with mixed large and
normal symbols. Fix it by centering the text vertically only if its
height is smaller that the saved font height.
Fixes #1543.

libi3/font.c

index df478fb4fc87f69e6a7d659b4bec7ab8cee4a10d..b6d9d42e696d4a8e34865b13e970cc68aea3ccfb 100644 (file)
@@ -126,7 +126,10 @@ static void draw_text_pango(const char *text, size_t text_len,
     cairo_set_source_rgb(cr, pango_font_red, pango_font_green, pango_font_blue);
     pango_cairo_update_layout(cr, layout);
     pango_layout_get_pixel_size(layout, NULL, &height);
-    cairo_move_to(cr, x, y - 0.5 * (height - savedFont->height));
+    /* Center the piece of text vertically if its height is smaller than the
+     * cached font height, and just let "high" symbols fall out otherwise. */
+    int yoffset = (height < savedFont->height ? 0.5 : 1) * (height - savedFont->height);
+    cairo_move_to(cr, x, y - yoffset);
     pango_cairo_show_layout(cr, layout);
 
     /* Free resources */