Enlightenment CVS committal

Author  : tsauerbeck
Project : e17
Module  : libs/edje

Dir     : e17/libs/edje/src/lib


Modified Files:
        edje_text.c 


Log Message:
unbreak edje_text_fit_x
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/edje/src/lib/edje_text.c,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -3 -r1.25 -r1.26
--- edje_text.c 30 Oct 2004 15:51:55 -0000      1.25
+++ edje_text.c 30 Oct 2004 16:54:58 -0000      1.26
@@ -286,17 +286,19 @@
      }
 }
 
-void
+static char *
 _edje_text_fit_x(Edje *ed, Edje_Real_Part *ep,
                  Edje_Calc_Params *params,
                  char *text, char *font, int size,
-                 Evas_Coord sw)
+                 Evas_Coord sw, int *free_text)
 {
    Evas_Coord tw = 0, th = 0, p;
    char *buf;
    int c1 = -1, c2 = -1, loop = 0, extra;
    size_t orig_len;
 
+   *free_text = 0;
+
    evas_object_text_font_set(ep->object, font, size);
    evas_object_text_text_set(ep->object, text);
 
@@ -322,17 +324,19 @@
          }
      }
 
-   extra = 1 + 3 + 3; /* terminator, leading and trailing ellipsis */
+   if (!((c1 >= 0 || c2 >= 0) && (tw > sw)))
+     return text;
 
    orig_len = strlen(text);
 
    /* don't overflow orig_len by adding extra
     * FIXME: we might want to set a max string length somewhere...
     */
+   extra = 1 + 3 + 3; /* terminator, leading and trailing ellipsis */
    orig_len = MIN(orig_len, SIZE_MAX - extra);
 
    if (!(buf = malloc(orig_len + extra)))
-     return;
+     return text;
 
    while (((c1 >= 0) || (c2 >= 0)) && (tw > sw))
      {
@@ -422,7 +426,10 @@
        evas_object_text_text_set(ep->object, buf);
        evas_object_geometry_get(ep->object, NULL, NULL, &tw, &th);
      }
-   if (loop > 0) text = buf;
+
+   *free_text = 1;
+
+   return buf;
 }
 
 void
@@ -435,9 +442,8 @@
    int     size;
    Evas_Coord  tw, th;
    Evas_Coord  ox, oy, sw, sh;
-   char    *buf = NULL;
    char     font_buf[4096];
-   int      inlined_font = 0;
+   int      inlined_font = 0, free_text = 0;
    
 
    text = chosen_desc->text.text;
@@ -600,7 +606,8 @@
        if (inlined_font) evas_object_text_font_source_set(ep->object, ed->path);
        else evas_object_text_font_source_set(ep->object, NULL);
 
-       _edje_text_fit_x(ed, ep, params, text, font, size, sw);
+       text = _edje_text_fit_x(ed, ep, params, text, font, size, sw,
+                               &free_text);
      }
 
    if (ep->text.cache.out_str) free(ep->text.cache.out_str);
@@ -670,5 +677,7 @@
             else evas_object_hide(o);
          }
      }
-   if (buf) free(buf);
+
+   if (free_text)
+     free(text);
 }




-------------------------------------------------------
This SF.Net email is sponsored by:
Sybase ASE Linux Express Edition - download now for FREE
LinuxWorld Reader's Choice Award Winner for best database on Linux.
http://ads.osdn.com/?ad_id=5588&alloc_id=12065&op=click
_______________________________________________
enlightenment-cvs mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to