diff options
author | Daniel Hirt <hirt.danny@gmail.com> | 2016-07-31 00:48:12 +0300 |
---|---|---|
committer | Daniel Hirt <hirt.danny@gmail.com> | 2016-07-31 00:59:43 +0300 |
commit | 81f7be7c2aa7bf6b1e512460c32dcb7eda7aa2e6 (patch) | |
tree | e48ead108e9ab33b08ae11de2105914003dead79 | |
parent | 742fbc5717f3b70a4f3c900f648f9cc761985966 (diff) | |
download | efl-81f7be7c2aa7bf6b1e512460c32dcb7eda7aa2e6.tar.gz |
Canvas text: fix range_geometry_get for RTLdevs/herdsman/fix_rtl
Fixes T3627.
@fix
-rw-r--r-- | src/lib/evas/canvas/evas_object_textblock.c | 23 | ||||
-rw-r--r-- | src/tests/evas/evas_test_textblock.c | 10 |
2 files changed, 21 insertions, 12 deletions
diff --git a/src/lib/evas/canvas/evas_object_textblock.c b/src/lib/evas/canvas/evas_object_textblock.c index da4840e2ca..85b529f487 100644 --- a/src/lib/evas/canvas/evas_object_textblock.c +++ b/src/lib/evas/canvas/evas_object_textblock.c @@ -11772,6 +11772,14 @@ _evas_textblock_cursor_range_in_line_geometry_get( return NULL; } +#ifdef BIDI_SUPPORT + if (ti->text_props.bidi_dir == EVAS_BIDI_DIRECTION_RTL) + { + x1 = x1 + w1; + x2 = x2 + w2; + } +#endif + /* Make x2 the one on the right */ if (x2 < x1) { @@ -11785,18 +11793,9 @@ _evas_textblock_cursor_range_in_line_geometry_get( w2 = tmp; } -#ifdef BIDI_SUPPORT - if (ti->text_props.bidi_dir == EVAS_BIDI_DIRECTION_RTL) - { - x = x1 + w1; - w = x2 + w2 - x; - } - else -#endif - { - x = x1; - w = x2 - x1; - } + x = x1; + w = x2 - x1; + if (w > 0) { tr = calloc(1, sizeof(Evas_Textblock_Rectangle)); diff --git a/src/tests/evas/evas_test_textblock.c b/src/tests/evas/evas_test_textblock.c index 70ba06bbfe..a3062c855e 100644 --- a/src/tests/evas/evas_test_textblock.c +++ b/src/tests/evas/evas_test_textblock.c @@ -2452,6 +2452,16 @@ START_TEST(evas_textblock_geometries) free(tr2); /* Same run different scripts */ + evas_object_textblock_text_markup_set(tb, "עברית"); + evas_textblock_cursor_pos_set(main_cur, 4); // last character + evas_textblock_cursor_pos_set(cur, 5); // after last character + + rects = evas_textblock_cursor_range_geometry_get(cur, main_cur); + fail_if(!rects); + EINA_LIST_FREE(rects, tr) + free(tr); + + evas_object_textblock_text_markup_set(tb, "עבריתenglishрусскийעברית"); evas_textblock_cursor_pos_set(cur, 3); |