Fix incorrect y-offset for text in i3bar (2)

014aa7ff74 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.
This commit is contained in:
shdown 2015-03-15 10:32:17 +03:00
parent 10a58725cd
commit 123de9a25f
1 changed files with 4 additions and 1 deletions

View 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); cairo_set_source_rgb(cr, pango_font_red, pango_font_green, pango_font_blue);
pango_cairo_update_layout(cr, layout); pango_cairo_update_layout(cr, layout);
pango_layout_get_pixel_size(layout, NULL, &height); 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); pango_cairo_show_layout(cr, layout);
/* Free resources */ /* Free resources */