diff --git a/src/lib/evas/canvas/evas_object_textblock.c b/src/lib/evas/canvas/evas_object_textblock.c
index 925b31741c..2534f20fa4 100644
--- a/src/lib/evas/canvas/evas_object_textblock.c
+++ b/src/lib/evas/canvas/evas_object_textblock.c
@@ -9596,7 +9596,19 @@ evas_textblock_cursor_geometry_get(const Evas_Textblock_Cursor *cur, Evas_Coord
if (ctype == EVAS_TEXTBLOCK_CURSOR_UNDER)
{
+ Evas_Object_Textblock_Line *ln;
+ Evas_Object_Textblock_Item *it;
+
ret = evas_textblock_cursor_pen_geometry_get(cur, cx, cy, cw, ch);
+ _find_layout_item_match(cur, &ln, &it);
+ if (ret >= 0)
+ {
+ Evas_BiDi_Direction itdir =
+ (it->type == EVAS_TEXTBLOCK_ITEM_TEXT) ?
+ _ITEM_TEXT(it)->text_props.bidi_dir :
+ _ITEM_FORMAT(it)->bidi_dir;
+ if (dir) *dir = itdir;
+ }
}
else if (ctype == EVAS_TEXTBLOCK_CURSOR_BEFORE)
{
@@ -9604,7 +9616,6 @@ evas_textblock_cursor_geometry_get(const Evas_Textblock_Cursor *cur, Evas_Coord
* of just after the previous char (which in bidi text may not be
* just before the current char). */
Evas_Coord x, y, w, h;
-
Evas_Object_Textblock_Line *ln;
Evas_Object_Textblock_Item *it;
diff --git a/src/tests/evas/evas_test_textblock.c b/src/tests/evas/evas_test_textblock.c
index 98174f59ae..928bbd303f 100644
--- a/src/tests/evas/evas_test_textblock.c
+++ b/src/tests/evas/evas_test_textblock.c
@@ -99,6 +99,7 @@ START_TEST(evas_textblock_cursor)
Evas_Coord x, y, w, h;
size_t i, len;
Evas_Coord nw, nh;
+ Evas_BiDi_Direction dir;
const char *buf = "This is a
test.Lets see if this works.עוד פסקה.";
/* Walk the textblock using cursor_char_next */
@@ -420,6 +421,28 @@ START_TEST(evas_textblock_cursor)
fail_if(evas_textblock_cursor_compare(main_cur, cur));
}
+ /* Check direction */
+ evas_object_textblock_text_markup_set(tb, "test");
+ fail_if(strcmp(evas_object_textblock_text_markup_get(tb), "test"));
+ dir = EVAS_BIDI_DIRECTION_RTL;
+ evas_textblock_cursor_geometry_get(cur, NULL, NULL, NULL, NULL, &dir,
+ EVAS_TEXTBLOCK_CURSOR_UNDER);
+ fail_if(dir != EVAS_BIDI_DIRECTION_LTR);
+ dir = EVAS_BIDI_DIRECTION_RTL;
+ evas_textblock_cursor_geometry_get(cur, NULL, NULL, NULL, NULL, &dir,
+ EVAS_TEXTBLOCK_CURSOR_BEFORE);
+ fail_if(dir != EVAS_BIDI_DIRECTION_LTR);
+ evas_object_textblock_text_markup_set(tb, "עוד פסקה");
+ fail_if(strcmp(evas_object_textblock_text_markup_get(tb), "עוד פסקה"));
+ dir = EVAS_BIDI_DIRECTION_LTR;
+ evas_textblock_cursor_geometry_get(cur, NULL, NULL, NULL, NULL, &dir,
+ EVAS_TEXTBLOCK_CURSOR_UNDER);
+ fail_if(dir != EVAS_BIDI_DIRECTION_RTL);
+ dir = EVAS_BIDI_DIRECTION_LTR;
+ evas_textblock_cursor_geometry_get(cur, NULL, NULL, NULL, NULL, &dir,
+ EVAS_TEXTBLOCK_CURSOR_BEFORE);
+ fail_if(dir != EVAS_BIDI_DIRECTION_RTL);
+
#ifdef HAVE_FRIBIDI
evas_object_textblock_text_markup_set(tb,
"testנסיוןtestנסיון"