From: shdown Date: Sun, 15 Mar 2015 07:32:17 +0000 (+0300) Subject: Fix incorrect y-offset for text in i3bar (2) X-Git-Tag: 4.10.1~45^2 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=refs%2Fpull%2F1549%2Fhead;p=i3%2Fi3 Fix incorrect y-offset for text in i3bar (2) 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. --- diff --git a/libi3/font.c b/libi3/font.c index df478fb4..b6d9d42e 100644 --- a/libi3/font.c +++ b/libi3/font.c @@ -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 */