diff options
author | Youngbok Shin <youngb.shin@samsung.com> | 2015-12-02 09:36:47 +0200 |
---|---|---|
committer | Daniel Hirt <daniel.hirt@samsung.com> | 2015-12-02 09:52:01 +0200 |
commit | 809d8fdafea0b38aa21c40dd9460be82dffece3a (patch) | |
tree | 09adb75e0eff4bfc6a9b876ef77da7a9e57dab88 /src | |
parent | cb227cb5fb2c5faba171e923df6c40e5d186c5ec (diff) | |
download | efl-809d8fdafea0b38aa21c40dd9460be82dffece3a.tar.gz |
Evas Textblock: Fix text disappear issue when text is made up with multiple items.
Summary:
Text is disappearing when we resize a singleline Evas Textblock with ellipsis.
It is happened by putting a Text item at logical_items list without considering about logical position.
It is only happended the text is made up with multiple items.
@fix
Test Plan:
1. Run elementary_test
2. Click Label Ellipsis
3. Resize the window dynamically and see the result.
Reviewers: woohyun, tasn, herdsman
Subscribers: jpeg, subodh6129, shilpasingh, cedric
Maniphest Tasks: T2709
Differential Revision: https://phab.enlightenment.org/D3022
Diffstat (limited to 'src')
-rw-r--r-- | src/lib/evas/canvas/evas_object_textblock.c | 11 | ||||
-rw-r--r-- | src/tests/evas/evas_test_textblock.c | 31 |
2 files changed, 41 insertions, 1 deletions
diff --git a/src/lib/evas/canvas/evas_object_textblock.c b/src/lib/evas/canvas/evas_object_textblock.c index bb9e8af15a..879659c117 100644 --- a/src/lib/evas/canvas/evas_object_textblock.c +++ b/src/lib/evas/canvas/evas_object_textblock.c @@ -4803,7 +4803,16 @@ _layout_handle_ellipsis(Ctxt *c, Evas_Object_Textblock_Item *it, Eina_List *i) if ((wrap > 0) && !IS_AT_END(ti, (size_t) wrap)) { - _layout_item_text_split_strip_white(c, ti, i, wrap); + Eina_List *l = i; + + while (l) + { + Evas_Object_Textblock_Item *iit = eina_list_data_get(l); + if (iit == _ITEM(ti)) break; + l = eina_list_prev(l); + } + + _layout_item_text_split_strip_white(c, ti, l, wrap); break; } else if (wrap < 0) diff --git a/src/tests/evas/evas_test_textblock.c b/src/tests/evas/evas_test_textblock.c index 70592b98a0..ad16793299 100644 --- a/src/tests/evas/evas_test_textblock.c +++ b/src/tests/evas/evas_test_textblock.c @@ -2018,6 +2018,37 @@ START_TEST(evas_textblock_wrapping) evas_object_textblock_size_formatted_get(tb, &w, &h); ck_assert_int_le(w, ellip_w); + /* Ellipsis test for multiple items in singleline. */ + { + evas_object_resize(tb, 500, 500); + evas_object_textblock_text_markup_set(tb, "ABC 한글한글 DEF"); + evas_textblock_cursor_format_prepend(cur, "+ ellipsis=1.0"); + evas_object_textblock_size_native_get(tb, &nw, &nh); + evas_object_resize(tb, nw, nh); + evas_object_textblock_size_formatted_get(tb, &w, &h); + + /* Make the object's width smaller. */ + for (i = 1; (nw / 5) <= (nw - i); i++) + { + evas_object_resize(tb, nw - i, nh); + evas_object_textblock_size_formatted_get(tb, &bw, &bh); + ck_assert_int_le(bw, w); + } + + /* Revert the object's width to native width. */ + for (; (nw - i) <= nw; i--) + { + evas_object_resize(tb, nw - i, nh); + evas_object_textblock_size_formatted_get(tb, &bw, &bh); + ck_assert_int_le(bw, w); + } + + /* The object resized same as native size. + * So, formatted width and native width should be same + * just like our first check. */ + ck_assert_int_eq(bw, w); + } + { double ellip; for(ellip = 0.0; ellip <= 1.0; ellip = ellip + 0.1) |