From: Daniel Hirt Date: Mon, 11 Jul 2016 16:18:54 +0000 (+0000) Subject: Canvas text: fix corner case in range geometry calc X-Git-Tag: upstream/1.20.0~5237 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=0c2398562687888f36e36d37a876427d9b4408a0;p=platform%2Fupstream%2Fefl.git Canvas text: fix corner case in range geometry calc The trivial case of [pos,pos] (i.e. range of length 0) didn't work if there is a format item in 'pos'. The condition was fixed to not include such items. The reason it was not apparent for text items is that these have further handling in the rest of the code and would've been disposed of. @fix --- diff --git a/src/lib/evas/canvas/evas_object_textblock.c b/src/lib/evas/canvas/evas_object_textblock.c index 3503e71..0048ffc 100644 --- a/src/lib/evas/canvas/evas_object_textblock.c +++ b/src/lib/evas/canvas/evas_object_textblock.c @@ -11706,7 +11706,7 @@ _evas_textblock_cursor_range_in_line_geometry_get( _ITEM_TEXT(it)->text_props.text_len : 1; if ((!cur1 || (cur1->pos < it->text_pos + item_len)) && - (!cur2 || (cur2->pos >= it->text_pos))) + (!cur2 || (cur2->pos > it->text_pos))) { if (!it1) { diff --git a/src/tests/evas/evas_test_textblock.c b/src/tests/evas/evas_test_textblock.c index f2e542a..70ba06b 100644 --- a/src/tests/evas/evas_test_textblock.c +++ b/src/tests/evas/evas_test_textblock.c @@ -2839,6 +2839,15 @@ START_TEST(evas_textblock_geometries) eina_iterator_free(it); + /* Check trivial case with format items */ + evas_object_textblock_text_markup_set(tb, "abcefg"); + evas_textblock_cursor_pos_set(cur, 3); + evas_textblock_cursor_pos_set(main_cur, 3); + it = evas_textblock_cursor_range_simple_geometry_get(cur, main_cur); + rects = eina_iterator_container_get(it); + ck_assert(!rects); + eina_iterator_free(it); + END_TB_TEST(); } END_TEST