From: Christophe CURIS <[email protected]>
(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 [email protected].