From 9a91261a4eb2b9868cec1efd89426c1b4d9e8554 Mon Sep 17 00:00:00 2001 From: "Carsten Haitzler (Rasterman)" Date: Wed, 20 Aug 2014 12:03:14 +0900 Subject: [PATCH] Revert "evas textblock: fixed ellipsis character cut off issue with complex markup text." This reverts commit d408408283dd4ece9023d792753fd63422b80cb1. this breaks mult-line "long" filenames in efm. 2nd line is just ... for almost all of them (ones that are actually in need of 3 or more lines). break break! REVERT! --- src/lib/evas/canvas/evas_object_textblock.c | 71 ++++++----------------------- src/tests/evas/evas_test_textblock.c | 23 ---------- 2 files changed, 13 insertions(+), 81 deletions(-) diff --git a/src/lib/evas/canvas/evas_object_textblock.c b/src/lib/evas/canvas/evas_object_textblock.c index 9f14cb5..fb59cee 100644 --- a/src/lib/evas/canvas/evas_object_textblock.c +++ b/src/lib/evas/canvas/evas_object_textblock.c @@ -4373,7 +4373,7 @@ _layout_ellipsis_item_new(Ctxt *c, const Evas_Object_Textblock_Item *cur_it) static inline void _layout_handle_ellipsis(Ctxt *c, Evas_Object_Textblock_Item *it, Eina_List *i) { - Evas_Object_Textblock_Text_Item *ti, *ellip_ti; + Evas_Object_Textblock_Text_Item *ellip_ti; Evas_Object_Textblock_Item *last_it; Evas_Coord save_cx; int wrap; @@ -4383,70 +4383,25 @@ _layout_handle_ellipsis(Ctxt *c, Evas_Object_Textblock_Item *it, Eina_List *i) save_cx = c->x; c->w -= ellip_ti->parent.w; - /* If there is no enough space for ellipsis item, remove all of items */ - if (c->w <= 0) - { - while (c->ln->items) - { - last_it = _ITEM(EINA_INLIST_GET(c->ln->items)->last); - c->ln->items = _ITEM(eina_inlist_remove( - EINA_INLIST_GET(c->ln->items), - EINA_INLIST_GET(last_it))); - } - last_it = NULL; - } - - while (last_it) + if (it->type == EVAS_TEXTBLOCK_ITEM_TEXT) { - if (last_it->type == EVAS_TEXTBLOCK_ITEM_TEXT) - { - ti = _ITEM_TEXT(last_it); - - wrap = _layout_text_cutoff_get(c, last_it->format, ti); - - if ((wrap > 0) && !IS_AT_END(ti, (size_t) wrap)) - { - _layout_item_text_split_strip_white(c, ti, i, wrap); - } - else if (wrap < 0) - { - break; - } - } - else - { - /* We will ignore format items. ex) tab - * But, if there is tag and size is acceptable, we have to insert it to line. */ - if (!strncmp(_ITEM_FORMAT(last_it)->item, "item", 4) && - (c->w - c->o->style_pad.l - c->o->style_pad.r - c->marginl - c->marginr >= c->x + last_it->adv)) - { - break; - } - } + Evas_Object_Textblock_Text_Item *ti = _ITEM_TEXT(it); - if (c->ln->items && last_it != it) + wrap = _layout_text_cutoff_get(c, last_it->format, ti); + if ((wrap > 0) && !IS_AT_END(ti, (size_t) wrap)) { - c->ln->items = _ITEM(eina_inlist_remove( - EINA_INLIST_GET(c->ln->items), - EINA_INLIST_GET(last_it))); + _layout_item_text_split_strip_white(c, ti, i, wrap); } - - last_it = (c->ln->items) ? _ITEM(EINA_INLIST_GET(c->ln->items)->last) : NULL; - - if (last_it) + else if ((wrap == 0) && (c->ln->items)) { - /* We need to renew ellipsis item. - * Because, base format is changed to last_it. - * We can't reuse it. */ - c->w += ellip_ti->parent.w; - ellip_ti = _layout_ellipsis_item_new(c, last_it); - c->w -= ellip_ti->parent.w; - c->x -= last_it->adv; - if (c->x < 0) - c->x = 0; - save_cx = c->x; + last_it = _ITEM(EINA_INLIST_GET(c->ln->items)->last); } } + else if (it->type == EVAS_TEXTBLOCK_ITEM_FORMAT) + { + /* We don't want to add this format item. */ + last_it = NULL; + } c->x = save_cx; c->w += ellip_ti->parent.w; diff --git a/src/tests/evas/evas_test_textblock.c b/src/tests/evas/evas_test_textblock.c index 13462e3..78d83ef 100644 --- a/src/tests/evas/evas_test_textblock.c +++ b/src/tests/evas/evas_test_textblock.c @@ -1574,7 +1574,6 @@ END_TEST START_TEST(evas_textblock_wrapping) { Evas_Coord bw, bh, w, h, nw, nh; - Evas_Coord ellip_w, ellip_h; int i; START_TB_TEST(); evas_object_textblock_text_markup_set(tb, "a"); @@ -1760,28 +1759,6 @@ START_TEST(evas_textblock_wrapping) evas_object_textblock_size_formatted_get(tb, &w, &h); ck_assert_int_le(w, (nw / 2)); - evas_object_textblock_text_markup_set(tb, "ababab"); - evas_textblock_cursor_format_prepend(cur, "+ font_size=50 ellipsis=1.0"); - evas_object_textblock_size_native_get(tb, &nw, &nh); - evas_object_resize(tb, nw / 2, nh * 2); - evas_object_textblock_size_formatted_get(tb, &w, &h); - ck_assert_int_le(w, (nw / 2)); - - evas_object_textblock_text_markup_set(tb, ""); - evas_textblock_cursor_format_prepend(cur, "+ ellipsis=1.0"); - evas_object_resize(tb, 101, 100); - evas_object_textblock_size_formatted_get(tb, &w, &h); - ck_assert_int_le(w, 100); - - evas_object_textblock_text_markup_set(tb, "…"); - evas_object_textblock_size_native_get(tb, &ellip_w, &ellip_h); - evas_object_textblock_text_markup_set(tb, "ab"); - evas_textblock_cursor_format_prepend(cur, "+ ellipsis=1.0"); - evas_object_textblock_size_native_get(tb, &nw, &nh); - evas_object_resize(tb, nw / 2, nh * 2); - evas_object_textblock_size_formatted_get(tb, &w, &h); - ck_assert_int_le(w, ellip_w); - { double ellip; for(ellip = 0.0; ellip <= 1.0; ellip = ellip + 0.1) -- 2.7.4