From: Christophe CURIS <christophe.cu...@free.fr> (merge with 21a882ef9abc115812e11f9a0f40f30018228b24) --- WINGs/wfont.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-)
diff --git a/WINGs/wfont.c b/WINGs/wfont.c index 32bb613..a5cff07 100644 --- a/WINGs/wfont.c +++ b/WINGs/wfont.c @@ -286,6 +286,7 @@ WMFont *WMBoldSystemFontOfSize(WMScreen * scrPtr, int size) int WMWidthOfString(WMFont * font, const char *text, int length) { #ifdef USE_PANGO + const char *previous_text; int width; #else XGlyphInfo extents; @@ -293,7 +294,8 @@ int WMWidthOfString(WMFont * font, const char *text, int length) wassertrv(font != NULL && text != NULL, 0); #ifdef USE_PANGO - if (strcmp(text, pango_layout_get_text(font->layout)) != 0) + previous_text = pango_layout_get_text(font->layout); + if ((previous_text == NULL) || (strcmp(text, previous_text) != 0)) pango_layout_set_text(font->layout, text, length); pango_layout_get_pixel_size(font->layout, &width, NULL); @@ -308,6 +310,9 @@ int WMWidthOfString(WMFont * font, const char *text, int length) void WMDrawString(WMScreen * scr, Drawable d, WMColor * color, WMFont * font, int x, int y, const char *text, int length) { XftColor xftcolor; +#ifdef USE_PANGO + const char *previous_text; +#endif wassertr(font != NULL); @@ -320,7 +325,8 @@ void WMDrawString(WMScreen * scr, Drawable d, WMColor * color, WMFont * font, in XftDrawChange(scr->xftdraw, d); #ifdef USE_PANGO - if (strcmp(text, pango_layout_get_text(font->layout)) != 0) + previous_text = pango_layout_get_text(font->layout); + if ((previous_text == NULL) || (strcmp(text, previous_text) != 0)) pango_layout_set_text(font->layout, text, length); pango_xft_render_layout(scr->xftdraw, &xftcolor, font->layout, x * PANGO_SCALE, y * PANGO_SCALE); #else @@ -334,6 +340,9 @@ WMDrawImageString(WMScreen * scr, Drawable d, WMColor * color, WMColor * backgro { XftColor textColor; XftColor bgColor; +#ifdef USE_PANGO + const char *previous_text; +#endif wassertr(font != NULL); @@ -354,7 +363,8 @@ WMDrawImageString(WMScreen * scr, Drawable d, WMColor * color, WMColor * backgro XftDrawRect(scr->xftdraw, &bgColor, x, y, WMWidthOfString(font, text, length), font->height); #ifdef USE_PANGO - if (strcmp(text, pango_layout_get_text(font->layout)) != 0) + previous_text = pango_layout_get_text(font->layout); + if ((previous_text == NULL) || (strcmp(text, previous_text) != 0)) pango_layout_set_text(font->layout, text, length); pango_xft_render_layout(scr->xftdraw, &textColor, font->layout, x * PANGO_SCALE, y * PANGO_SCALE); #else -- 2.1.1 -- To unsubscribe, send mail to wmaker-dev-unsubscr...@lists.windowmaker.org.