From ebe09c4854e4f93e579bb968e32c49b2c9079a67 Mon Sep 17 00:00:00 2001 From: Tom Hacohen Date: Mon, 4 Jan 2016 15:09:16 +0000 Subject: [PATCH] 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))) -- 2.7.4