diff --git a/src/lib/efl/interfaces/efl_text_markup.eo b/src/lib/efl/interfaces/efl_text_markup.eo
index 7e2bbaaaee..1fbfd70b35 100644
--- a/src/lib/efl/interfaces/efl_text_markup.eo
+++ b/src/lib/efl/interfaces/efl_text_markup.eo
@@ -10,6 +10,17 @@ interface Efl.Text_Markup(Efl.Text_Cursor) {
markup: string; [[The markup-text representation set to this text.]]
}
}
+ @property markup_range {
+ [[Markup of a given range in the text]]
+ values {
+ markup: mstring @owned; [[The markup-text representation set to
+ this text of a given range]]
+ }
+ keys {
+ start: ptr(Efl.Text_Cursor_Cursor);
+ end: ptr(Efl.Text_Cursor_Cursor);
+ }
+ }
cursor_markup_insert {
[[Inserts a markup text to the text object in a given cursor position]]
params {
diff --git a/src/lib/evas/canvas/efl_canvas_text.eo b/src/lib/evas/canvas/efl_canvas_text.eo
index 6c82adf82a..1f193443d0 100644
--- a/src/lib/evas/canvas/efl_canvas_text.eo
+++ b/src/lib/evas/canvas/efl_canvas_text.eo
@@ -355,6 +355,7 @@ class Efl.Canvas.Text (Efl.Canvas.Object, Efl.Text,
Efl.Text_Annotate.cursor_item_insert;
Efl.Text_Markup.markup { set; get; }
Efl.Text_Markup.cursor_markup_insert;
+ Efl.Text_Markup.markup_range { get;}
Efl.Gfx.Entity.scale { set; }
}
events {
diff --git a/src/lib/evas/canvas/evas_object_textblock.c b/src/lib/evas/canvas/evas_object_textblock.c
index c290ac38ae..d5705a47ae 100644
--- a/src/lib/evas/canvas/evas_object_textblock.c
+++ b/src/lib/evas/canvas/evas_object_textblock.c
@@ -11418,6 +11418,17 @@ _evas_textblock_cursor_range_text_markup_get(const Efl_Text_Cursor_Cursor *cur1,
}
}
+EOLIAN char *
+_efl_canvas_text_efl_text_markup_markup_range_get(const Eo *eo_obj,
+ Efl_Canvas_Text_Data *o EINA_UNUSED, Efl_Text_Cursor_Cursor *start,
+ Efl_Text_Cursor_Cursor *end)
+{
+ if (!start || !start->node) return NULL;
+ if (!end || !end->node) return NULL;
+ if ((start->obj != eo_obj) || (start->obj != end->obj)) return NULL;
+ return _evas_textblock_cursor_range_text_markup_get(start, end);
+}
+
static char *
_evas_textblock_cursor_range_text_plain_get(const Efl_Text_Cursor_Cursor *cur1, const Efl_Text_Cursor_Cursor *_cur2)
{
diff --git a/src/tests/evas/evas_test_textblock.c b/src/tests/evas/evas_test_textblock.c
index 62b3812f8e..9246f77a52 100644
--- a/src/tests/evas/evas_test_textblock.c
+++ b/src/tests/evas/evas_test_textblock.c
@@ -4612,6 +4612,35 @@ EFL_START_TEST(efl_canvas_text_cursor)
}
EFL_END_TEST
+
+EFL_START_TEST(efl_canvas_text_markup)
+{
+ START_EFL_CANVAS_TEXT_TEST();
+ Efl_Text_Cursor_Cursor *start, *end;
+ char *res;
+
+ start = efl_text_cursor_new(txt);
+ end = efl_text_cursor_new(txt);
+
+ efl_text_set(txt, "\n\n\n");
+
+ efl_text_cursor_position_set(txt, start, 1);
+ efl_text_cursor_position_set(txt, end, 2);
+ res = efl_text_markup_range_get(txt, start, end);
+ ck_assert_str_eq(res, "
");
+ free(res);
+
+ efl_text_set(txt, "a\u2029bc\ndef\n\u2029");
+ efl_text_cursor_position_set(txt, start, 2);
+ efl_text_cursor_position_set(txt, end, 5);
+ res = efl_text_markup_range_get(txt, start, end);
+ ck_assert_str_eq(res, "bc
");
+ free(res);
+
+ END_EFL_CANVAS_TEXT_TEST();
+}
+EFL_END_TEST
+
void evas_test_textblock(TCase *tc)
{
tcase_add_test(tc, evas_textblock_simple);
@@ -4643,5 +4672,6 @@ void evas_test_textblock(TCase *tc)
tcase_add_test(tc, efl_canvas_text_simple);
tcase_add_test(tc, efl_text);
tcase_add_test(tc, efl_canvas_text_cursor);
+ tcase_add_test(tc, efl_canvas_text_markup);
}