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.

Reply via email to