From: Tom Hacohen Date: Mon, 4 Jan 2016 15:09:16 +0000 (+0000) Subject: Evas textblock: Clean up ellipsis handling code. X-Git-Tag: upstream/1.20.0~7808 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=ebe09c4854e4f93e579bb968e32c49b2c9079a67;p=platform%2Fupstream%2Fefl.git 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. --- 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)))