tasn pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=ebe09c4854e4f93e579bb968e32c49b2c9079a67

commit ebe09c4854e4f93e579bb968e32c49b2c9079a67
Author: Tom Hacohen <t...@stosb.com>
Date:   Mon Jan 4 15:09:16 2016 +0000

    Evas textblock: Clean up ellipsis handling code.
    
    This cleans up the previous commit a bit by isolating the calculation
    code and using a temporary descriptively named variable for the calculation.
---
 src/lib/evas/canvas/evas_object_textblock.c | 34 +++++++++++++++++++----------
 1 file changed, 22 insertions(+), 12 deletions(-)

diff --git a/src/lib/evas/canvas/evas_object_textblock.c 
b/src/lib/evas/canvas/evas_object_textblock.c
index b28de11..7039364 100644
--- a/src/lib/evas/canvas/evas_object_textblock.c
+++ b/src/lib/evas/canvas/evas_object_textblock.c
@@ -5227,22 +5227,32 @@ _layout_par(Ctxt *c)
               * fast path.
               * Other values of 0.0 <= ellipsis < 1.0 are handled in
               * _layout_par_ellipsis_items */
-             int ascent = 0, descent = 0, maxasc = 0, maxdesc = 0;
-             _layout_item_ascent_descent_adjust(c->obj, &ascent, &descent,
-                                                it, it->format);
+             int ellip_h_thresh = 0;
 
-             if (c->position == TEXTBLOCK_POSITION_START)
-               _layout_item_max_ascent_descent_calc(c->obj, &maxasc, &maxdesc,
-                                                    it, 
TEXTBLOCK_POSITION_SINGLE);
-             else
-               _layout_item_max_ascent_descent_calc(c->obj, &maxasc, &maxdesc,
-                                                    it, 
TEXTBLOCK_POSITION_END);
+             /* Calculate ellipsis threshold height. */
+               {
+                  int ascent = 0, descent = 0, maxasc = 0, maxdesc = 0;
+
+                  _layout_item_ascent_descent_adjust(c->obj, &ascent, &descent,
+                        it, it->format);
+
+                  if (c->position == TEXTBLOCK_POSITION_START)
+                     _layout_item_max_ascent_descent_calc(c->obj, &maxasc, 
&maxdesc,
+                           it, TEXTBLOCK_POSITION_SINGLE);
+                  else
+                     _layout_item_max_ascent_descent_calc(c->obj, &maxasc, 
&maxdesc,
+                           it, TEXTBLOCK_POSITION_END);
 
-             if (ascent > maxasc) maxasc = ascent;
-             if (descent > maxdesc) maxdesc = descent;
+                  if (ascent > maxasc) maxasc = ascent;
+                  if (descent > maxdesc) maxdesc = descent;
+
+                  /* The ascent/descent of this item + the ascent descent of
+                   * the next item as if it was the last. */
+                  ellip_h_thresh = ascent + descent + maxasc + maxdesc;
+               }
 
              if ((it->format->ellipsis == 1.0) && (c->h >= 0) &&
-                   ((ascent + descent + maxasc + maxdesc + c->y >
+                   ((c->y + ellip_h_thresh >
                      c->h - c->o->style_pad.t - c->o->style_pad.b) ||
                     (!it->format->wrap_word && !it->format->wrap_char &&
                      !it->format->wrap_mixed && 
!it->format->wrap_hyphenation)))

-- 


Reply via email to