herdsman pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=0c2398562687888f36e36d37a876427d9b4408a0

commit 0c2398562687888f36e36d37a876427d9b4408a0
Author: Daniel Hirt <[email protected]>
Date:   Mon Jul 11 16:18:54 2016 +0000

    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
---
 src/lib/evas/canvas/evas_object_textblock.c | 2 +-
 src/tests/evas/evas_test_textblock.c        | 9 +++++++++
 2 files changed, 10 insertions(+), 1 deletion(-)

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, "abc<item size=32x32>efg");
+   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

-- 


Reply via email to