From 1afda715bcdcff2b3797f7e21b0c451e55454b79 Mon Sep 17 00:00:00 2001 From: Xavi Artigas Date: Tue, 7 Apr 2020 13:03:40 +0200 Subject: Fix namespace clashes for Efl.Text.Cursor Summary: Three renames are applied here: Efl.Text.Cursor -> Efl.Text_Cursor.Object (class) Efl.Text.Cursor_Type -> Efl.Text_Cursor.Type (enum) Efl.Text.Cursor_Move_Type -> Efl.Text_Cursor.Move_Type (enum) Nothing changes for the enums on the C side. For the class... Well, the method names are a bit more verbose now. These renames are required to avoid clashing with the Efl.Text interface. This did not cause trouble to C# because interfaces are prefixed with "I", but it did cause trouble to Eolian when the EO files were installed and somebody tried to use them. Ref T8648 Test Plan: Everything builds and passes tests. Reviewers: bu5hm4n, zmike, ali.alzyod Subscribers: cedric, #reviewers, #committers Tags: #efl Maniphest Tasks: T8648 Differential Revision: https://phab.enlightenment.org/D11663 --- src/bin/elementary/test_efl_ui_text.c | 14 +- src/lib/elementary/efl_text_interactive.eo | 8 +- .../elementary/efl_ui_internal_text_interactive.c | 290 ++++++------ src/lib/elementary/efl_ui_textbox.c | 150 +++---- src/lib/elementary/efl_ui_textbox.eo | 2 +- src/lib/elementary/elm_atspi_bridge.c | 126 +++--- src/lib/evas/Efl_Canvas.h | 2 +- src/lib/evas/Evas_Eo.h | 2 +- src/lib/evas/Evas_Internal.h | 4 +- src/lib/evas/canvas/efl_canvas_textblock.eo | 8 +- .../evas/canvas/efl_canvas_textblock_internal.h | 8 +- src/lib/evas/canvas/efl_text_cursor.c | 497 --------------------- src/lib/evas/canvas/efl_text_cursor.eo | 240 ---------- src/lib/evas/canvas/efl_text_cursor_object.c | 497 +++++++++++++++++++++ src/lib/evas/canvas/efl_text_cursor_object.eo | 239 ++++++++++ src/lib/evas/canvas/efl_text_formatter.c | 44 +- src/lib/evas/canvas/efl_text_formatter.eo | 12 +- src/lib/evas/canvas/evas_object_textblock.c | 16 +- src/lib/evas/canvas/meson.build | 4 +- src/tests/elementary/efl_ui_test_text.c | 46 +- src/tests/evas/evas_test_textblock.c | 386 ++++++++-------- 21 files changed, 1297 insertions(+), 1298 deletions(-) delete mode 100644 src/lib/evas/canvas/efl_text_cursor.c delete mode 100644 src/lib/evas/canvas/efl_text_cursor.eo create mode 100644 src/lib/evas/canvas/efl_text_cursor_object.c create mode 100644 src/lib/evas/canvas/efl_text_cursor_object.eo diff --git a/src/bin/elementary/test_efl_ui_text.c b/src/bin/elementary/test_efl_ui_text.c index 53914831e7..49cfff589f 100644 --- a/src/bin/elementary/test_efl_ui_text.c +++ b/src/bin/elementary/test_efl_ui_text.c @@ -8,13 +8,13 @@ static void _apply_style(Eo *obj, size_t start_pos, size_t end_pos, const char *style) { - Efl_Text_Cursor *start, *end; + Efl_Text_Cursor_Object *start, *end; start = efl_ui_textbox_cursor_create(obj); end = efl_ui_textbox_cursor_create(obj); - efl_text_cursor_position_set(start, start_pos); - efl_text_cursor_position_set(end, end_pos); + efl_text_cursor_object_position_set(start, start_pos); + efl_text_cursor_object_position_set(end, end_pos); efl_text_formatter_attribute_insert(start, end, style); @@ -101,15 +101,15 @@ typedef struct static void _on_bt3_clicked(void *data, const Efl_Event *event EINA_UNUSED) { - Efl_Text_Cursor *sel_start, *sel_end; + Efl_Text_Cursor_Object *sel_start, *sel_end; Eo *en = data; efl_text_interactive_selection_cursors_get(en, &sel_start, &sel_end); - const char *s = efl_text_cursor_range_text_get(sel_start, sel_end); + const char *s = efl_text_cursor_object_range_text_get(sel_start, sel_end); printf("SELECTION REGION: %d - %d\n", - efl_text_cursor_position_get( sel_start), - efl_text_cursor_position_get(sel_end)); + efl_text_cursor_object_position_get( sel_start), + efl_text_cursor_object_position_get(sel_end)); printf("SELECTION:\n"); if (s) printf("%s\n", s); } diff --git a/src/lib/elementary/efl_text_interactive.eo b/src/lib/elementary/efl_text_interactive.eo index 9e917ca7ec..5f463f3c41 100644 --- a/src/lib/elementary/efl_text_interactive.eo +++ b/src/lib/elementary/efl_text_interactive.eo @@ -13,7 +13,7 @@ interface Efl.Text_Interactive extends Efl.Text, Efl.Text_Font_Properties, [[The cursor used to insert new text, the one that's visible to the user.]] get {} values { - cursor: Efl.Text.Cursor; [[The cursor visible to the user.]] + cursor: Efl.Text_Cursor.Object; [[The cursor visible to the user.]] } } @property selection_allowed { @@ -34,12 +34,12 @@ interface Efl.Text_Interactive extends Efl.Text, Efl.Text_Font_Properties, } set { [[The positions of passed cursors will be used to set selection cursors positions. - Further modification for passed @Efl.Text.Cursor objects, will not affect selection. + Further modification for passed @Efl.Text_Cursor.Object objects, will not affect selection. Setter is recommended to set new range for selection.]] } values { - start: Efl.Text.Cursor; [[The start of the selection.]] - end: Efl.Text.Cursor; [[The end of the selection.]] + start: Efl.Text_Cursor.Object; [[The start of the selection.]] + end: Efl.Text_Cursor.Object; [[The end of the selection.]] } } @property editable { diff --git a/src/lib/elementary/efl_ui_internal_text_interactive.c b/src/lib/elementary/efl_ui_internal_text_interactive.c index 3fd39d1b26..b042f8e305 100644 --- a/src/lib/elementary/efl_ui_internal_text_interactive.c +++ b/src/lib/elementary/efl_ui_internal_text_interactive.c @@ -13,10 +13,10 @@ typedef struct _Efl_Ui_Internal_Text_Interactive_Data { - Efl_Text_Cursor *sel_start, *sel_end; + Efl_Text_Cursor_Object *sel_start, *sel_end; Eina_Bool watch_selection; - Efl_Text_Cursor *main_cursor; - Efl_Text_Cursor *preedit_start, *preedit_end; + Efl_Text_Cursor_Object *main_cursor; + Efl_Text_Cursor_Object *preedit_start, *preedit_end; Ecore_Timer *pw_timer; Eina_List *seq; char *selection; @@ -48,9 +48,9 @@ typedef struct _Efl_Ui_Internal_Text_Interactive_Data } Efl_Ui_Internal_Text_Interactive_Data; static void _sel_range_del_emit(Evas_Object *obj, Efl_Ui_Internal_Text_Interactive_Data *en); -static void _sel_init(Efl_Text_Cursor *c, Efl_Ui_Internal_Text_Interactive_Data *en); +static void _sel_init(Efl_Text_Cursor_Object *c, Efl_Ui_Internal_Text_Interactive_Data *en); static void _sel_enable(Evas_Object *o,Efl_Ui_Internal_Text_Interactive_Data *en); -static void _sel_extend(Efl_Text_Cursor *c, Evas_Object *o, Efl_Ui_Internal_Text_Interactive_Data *en); +static void _sel_extend(Efl_Text_Cursor_Object *c, Evas_Object *o, Efl_Ui_Internal_Text_Interactive_Data *en); static void _sel_clear(Evas_Object *o EINA_UNUSED, Efl_Ui_Internal_Text_Interactive_Data *en); static void _emit_sel_state( Eo *o, Efl_Ui_Internal_Text_Interactive_Data *en); static const char *_entry_selection_get(Efl_Ui_Internal_Text_Interactive *obj, Efl_Ui_Internal_Text_Interactive_Data *en); @@ -61,33 +61,33 @@ static void _sel_watch_thaw(Efl_Ui_Internal_Text_Interactive_Data *en); static void _text_filter_format_prepend(Efl_Canvas_Textblock *obj, Efl_Ui_Internal_Text_Interactive_Data *en, - Efl_Text_Cursor *c, const char *text); + Efl_Text_Cursor_Object *c, const char *text); static Efl_Text_Change_Info * _text_filter_text_prepend(Efl_Canvas_Textblock *obj, Efl_Ui_Internal_Text_Interactive_Data *en, - Efl_Text_Cursor *c, + Efl_Text_Cursor_Object *c, const char *text, const char *fmtpre, const char *fmtpost, Eina_Bool clearsel, Eina_Bool changeinfo); static Efl_Text_Change_Info * _text_filter_markup_prepend_internal(Efl_Canvas_Textblock *obj, Efl_Ui_Internal_Text_Interactive_Data *en, - Efl_Text_Cursor *c, + Efl_Text_Cursor_Object *c, char *text, const char *fmtpre, const char *fmtpost, Eina_Bool clearsel, Eina_Bool changeinfo); static Efl_Text_Change_Info * _text_filter_markup_prepend(Efl_Canvas_Textblock *obj, Efl_Ui_Internal_Text_Interactive_Data *en, - Efl_Text_Cursor *c, + Efl_Text_Cursor_Object *c, const char *text, const char *fmtpre, const char *fmtpost, Eina_Bool clearsel, Eina_Bool changeinfo); static void -_cur_pos_copy(Efl_Text_Cursor *src, Efl_Text_Cursor *dest) +_cur_pos_copy(Efl_Text_Cursor_Object *src, Efl_Text_Cursor_Object *dest) { - efl_text_cursor_position_set(dest, efl_text_cursor_position_get(src)); + efl_text_cursor_object_position_set(dest, efl_text_cursor_object_position_get(src)); } static void @@ -126,17 +126,17 @@ _preedit_del(Eo *obj EINA_UNUSED, Efl_Ui_Internal_Text_Interactive_Data *en) { if (!en || !en->have_preedit) return; if (!en->preedit_start || !en->preedit_end) return; - if (efl_text_cursor_equal(en->preedit_start, en->preedit_end)) return; + if (efl_text_cursor_object_equal(en->preedit_start, en->preedit_end)) return; /* delete the preedit characters */ - efl_text_cursor_range_delete(en->preedit_start, en->preedit_end); + efl_text_cursor_object_range_delete(en->preedit_start, en->preedit_end); } static Eina_Bool _entry_imf_retrieve_surrounding_cb(void *data, Ecore_IMF_Context *ctx EINA_UNUSED, char **text, int *cursor_pos) { Efl_Canvas_Textblock *obj = data; - Efl_Text_Cursor *cur = efl_text_interactive_main_cursor_get(obj); + Efl_Text_Cursor_Object *cur = efl_text_interactive_main_cursor_get(obj); const char *str; if (text) @@ -153,7 +153,7 @@ _entry_imf_retrieve_surrounding_cb(void *data, Ecore_IMF_Context *ctx EINA_UNUSE if (cursor_pos) { if (cur) - *cursor_pos = efl_text_cursor_position_get(cur); + *cursor_pos = efl_text_cursor_object_position_get(cur); else *cursor_pos = 0; } @@ -262,7 +262,7 @@ _entry_imf_event_commit_cb(void *data, Ecore_IMF_Context *ctx EINA_UNUSED, void static Efl_Text_Change_Info * _text_filter_markup_prepend_internal(Efl_Canvas_Textblock *obj, Efl_Ui_Internal_Text_Interactive_Data *en, - Efl_Text_Cursor *c, + Efl_Text_Cursor_Object *c, char *text, const char *fmtpre, const char *fmtpost, Eina_Bool clearsel, Eina_Bool changeinfo) @@ -301,11 +301,11 @@ _text_filter_markup_prepend_internal(Efl_Canvas_Textblock *obj, Efl_Ui_Internal_ info->mergeable = EINA_TRUE; } info->position = - efl_text_cursor_position_get(efl_text_interactive_main_cursor_get(obj)); + efl_text_cursor_object_position_get(efl_text_interactive_main_cursor_get(obj)); } if (fmtpre) _text_filter_format_prepend(obj, en, efl_text_interactive_main_cursor_get(obj), fmtpre); //evas_object_textblock_text_markup_prepend(c, text); - efl_text_cursor_text_insert(c, text); + efl_text_cursor_object_text_insert(c, text); free(text); if (fmtpost) _text_filter_format_prepend(obj, en, efl_text_interactive_main_cursor_get(obj), fmtpost); return info; @@ -315,7 +315,7 @@ _text_filter_markup_prepend_internal(Efl_Canvas_Textblock *obj, Efl_Ui_Internal_ static Efl_Text_Change_Info * _text_filter_markup_prepend(Efl_Canvas_Textblock *obj, Efl_Ui_Internal_Text_Interactive_Data *en, - Efl_Text_Cursor *c, + Efl_Text_Cursor_Object *c, const char *text, const char *fmtpre, const char *fmtpost, Eina_Bool clearsel, Eina_Bool changeinfo) @@ -344,7 +344,7 @@ _text_filter_markup_prepend(Efl_Canvas_Textblock *obj, Efl_Ui_Internal_Text_Inte static Efl_Text_Change_Info * _text_filter_text_prepend(Efl_Canvas_Textblock *obj, Efl_Ui_Internal_Text_Interactive_Data *en, - Efl_Text_Cursor *c, + Efl_Text_Cursor_Object *c, const char *text, const char *fmtpre, const char *fmtpost, Eina_Bool clearsel, Eina_Bool changeinfo) @@ -369,7 +369,7 @@ _text_filter_text_prepend(Efl_Canvas_Textblock *obj, Efl_Ui_Internal_Text_Intera static void _text_filter_format_prepend(Efl_Canvas_Textblock *obj, Efl_Ui_Internal_Text_Interactive_Data *en, - Efl_Text_Cursor *c, const char *text) + Efl_Text_Cursor_Object *c, const char *text) { EINA_SAFETY_ON_NULL_RETURN(text); @@ -443,7 +443,7 @@ static void _entry_imf_event_preedit_changed_cb(void *data, Ecore_IMF_Context *ctx EINA_UNUSED, void *event_info EINA_UNUSED) { Efl_Canvas_Textblock *obj = data; - Efl_Text_Cursor *cur = efl_text_interactive_main_cursor_get(obj); + Efl_Text_Cursor_Object *cur = efl_text_interactive_main_cursor_get(obj); Efl_Ui_Internal_Text_Interactive_Data *en = efl_data_scope_get(obj, MY_CLASS); Efl_Text_Change_Info *info = NULL; int cursor_pos; @@ -482,7 +482,7 @@ _entry_imf_event_preedit_changed_cb(void *data, Ecore_IMF_Context *ctx EINA_UNUS /* delete preedit characters */ _preedit_del(obj, en); - preedit_start_pos = efl_text_cursor_position_get(cur); + preedit_start_pos = efl_text_cursor_object_position_get(cur); /* insert preedit character(s) */ if (strlen(preedit_string) > 0) @@ -552,17 +552,17 @@ _entry_imf_event_preedit_changed_cb(void *data, Ecore_IMF_Context *ctx EINA_UNUS en->preedit_end = efl_canvas_textblock_cursor_create(obj); _cur_pos_copy(cur, en->preedit_end); - preedit_end_pos = efl_text_cursor_position_get(cur); + preedit_end_pos = efl_text_cursor_object_position_get(cur); for (i = 0; i < (preedit_end_pos - preedit_start_pos); i++) { - efl_text_cursor_move(en->preedit_start, EFL_TEXT_CURSOR_MOVE_TYPE_CHARACTER_PREVIOUS); + efl_text_cursor_object_move(en->preedit_start, EFL_TEXT_CURSOR_MOVE_TYPE_CHARACTER_PREVIOUS); } en->have_preedit = EINA_TRUE; /* set cursor position */ - efl_text_cursor_position_set(cur, preedit_start_pos + cursor_pos); + efl_text_cursor_object_position_set(cur, preedit_start_pos + cursor_pos); } if (info) @@ -588,35 +588,35 @@ static void _entry_imf_event_delete_surrounding_cb(void *data, Ecore_IMF_Context *ctx EINA_UNUSED, void *event_info) { Efl_Canvas_Textblock *obj = data; - Efl_Text_Cursor *cur = efl_text_interactive_main_cursor_get(obj); + Efl_Text_Cursor_Object *cur = efl_text_interactive_main_cursor_get(obj); Efl_Ui_Internal_Text_Interactive_Data *en = efl_data_scope_get(obj, MY_CLASS); Ecore_IMF_Event_Delete_Surrounding *ev = event_info; - Efl_Text_Cursor *del_start, *del_end; + Efl_Text_Cursor_Object *del_start, *del_end; Efl_Text_Change_Info info = { NULL, 0, 0, 0, 0 }; int cursor_pos; int start, end; char *tmp; - cursor_pos = efl_text_cursor_position_get(cur); + cursor_pos = efl_text_cursor_object_position_get(cur); del_start = efl_canvas_textblock_cursor_create(obj); - efl_text_cursor_position_set(del_start, cursor_pos + ev->offset); + efl_text_cursor_object_position_set(del_start, cursor_pos + ev->offset); del_end = efl_canvas_textblock_cursor_create(obj); - efl_text_cursor_position_set(del_end, cursor_pos + ev->offset + ev->n_chars); + efl_text_cursor_object_position_set(del_end, cursor_pos + ev->offset + ev->n_chars); - start = efl_text_cursor_position_get(del_start); - end = efl_text_cursor_position_get(del_end); + start = efl_text_cursor_object_position_get(del_start); + end = efl_text_cursor_object_position_get(del_end); if (start == end) goto end; - tmp = efl_text_cursor_range_text_get(del_start, del_end); + tmp = efl_text_cursor_object_range_text_get(del_start, del_end); info.type = EFL_TEXT_CHANGE_TYPE_REMOVE; info.position = start; info.length = end - start; info.content = tmp; - efl_text_cursor_range_delete(del_start, del_end); + efl_text_cursor_object_range_delete(del_start, del_end); efl_event_callback_call(obj, EFL_TEXT_INTERACTIVE_EVENT_CHANGED_USER, &info); free(tmp); @@ -632,21 +632,21 @@ static void _entry_imf_event_selection_set_cb(void *data, Ecore_IMF_Context *ctx EINA_UNUSED, void *event_info) { Efl_Canvas_Textblock *obj = data; - Efl_Text_Cursor *cur = efl_text_interactive_main_cursor_get(obj); + Efl_Text_Cursor_Object *cur = efl_text_interactive_main_cursor_get(obj); Efl_Ui_Internal_Text_Interactive_Data *en = efl_data_scope_get(obj, MY_CLASS); Ecore_IMF_Event_Selection *ev = event_info; if (ev->start == ev->end) { - efl_text_cursor_position_set(cur, ev->start); + efl_text_cursor_object_position_set(cur, ev->start); } else { _sel_clear(obj, en); - efl_text_cursor_position_set(cur, ev->start); + efl_text_cursor_object_position_set(cur, ev->start); _sel_enable(obj, en); _sel_init(cur, en); - efl_text_cursor_position_set(cur, ev->end); + efl_text_cursor_object_position_set(cur, ev->end); _sel_extend(cur, obj, en); } } @@ -680,7 +680,7 @@ _entry_imf_cursor_location_set(Efl_Ui_Internal_Text_Interactive_Data *en) Eina_Rect rect; if (!en->imf_context) return; - rect = efl_text_cursor_geometry_get(en->main_cursor ,EFL_TEXT_CURSOR_TYPE_BEFORE); + rect = efl_text_cursor_object_cursor_geometry_get(en->main_cursor ,EFL_TEXT_CURSOR_TYPE_BEFORE); ecore_imf_context_cursor_location_set(en->imf_context, rect.x, rect.y, rect.w, rect.h); // FIXME: ecore_imf_context_bidi_direction_set(en->imf_context, (Ecore_IMF_BiDi_Direction)dir); #else @@ -698,13 +698,13 @@ _entry_imf_cursor_info_set(Efl_Ui_Internal_Text_Interactive_Data *en) if (en->have_selection) { - if (efl_text_cursor_compare(en->sel_start, en->sel_end) < 0) - cursor_pos = efl_text_cursor_position_get(en->sel_start); + if (efl_text_cursor_object_compare(en->sel_start, en->sel_end) < 0) + cursor_pos = efl_text_cursor_object_position_get(en->sel_start); else - cursor_pos = efl_text_cursor_position_get(en->sel_end); + cursor_pos = efl_text_cursor_object_position_get(en->sel_end); } else - cursor_pos = efl_text_cursor_position_get(en->main_cursor); + cursor_pos = efl_text_cursor_object_position_get(en->main_cursor); ecore_imf_context_cursor_position_set(en->imf_context, cursor_pos); @@ -758,7 +758,7 @@ static const char * _entry_selection_get(Efl_Ui_Internal_Text_Interactive *obj EINA_UNUSED, Efl_Ui_Internal_Text_Interactive_Data *en) { if ((!en->selection) && (en->have_selection)) - en->selection = efl_text_cursor_range_text_get(en->sel_start, en->sel_end); + en->selection = efl_text_cursor_object_range_text_get(en->sel_start, en->sel_end); return en->selection; } @@ -768,12 +768,12 @@ _sel_reset(Eo *obj, Efl_Ui_Internal_Text_Interactive_Data *en){ if (!en->watch_selection) return; - if (!en->have_selection && efl_text_cursor_equal(en->sel_start, en->sel_end)) + if (!en->have_selection && efl_text_cursor_object_equal(en->sel_start, en->sel_end)) return; if (en->have_selection) { - if (efl_text_cursor_equal(en->sel_start, en->sel_end)) + if (efl_text_cursor_object_equal(en->sel_start, en->sel_end)) { _sel_clear(obj, en); } @@ -790,7 +790,7 @@ _sel_reset(Eo *obj, Efl_Ui_Internal_Text_Interactive_Data *en){ } else { - if (!efl_text_cursor_equal(en->sel_start, en->sel_end)) + if (!efl_text_cursor_object_equal(en->sel_start, en->sel_end)) { _sel_enable(obj, en); _entry_imf_cursor_info_set(en); @@ -817,7 +817,7 @@ _sel_cursor_changed(void *data EINA_UNUSED, const Efl_Event *event EINA_UNUSED) } static void -_sel_init(Efl_Text_Cursor *c, Efl_Ui_Internal_Text_Interactive_Data *en) +_sel_init(Efl_Text_Cursor_Object *c, Efl_Ui_Internal_Text_Interactive_Data *en) { if (en->have_selection) return; @@ -854,23 +854,23 @@ _sel_enable(Eo *o, Efl_Ui_Internal_Text_Interactive_Data *en) static void _emit_sel_state( Eo *o, Efl_Ui_Internal_Text_Interactive_Data *en) { - if (!efl_text_cursor_compare(en->sel_start, en->sel_end)) + if (!efl_text_cursor_object_compare(en->sel_start, en->sel_end)) { _sel_clear(o, en); } else { - Eina_Range range = eina_range_from_to(efl_text_cursor_position_get(en->sel_start), - efl_text_cursor_position_get(en->sel_end)); + Eina_Range range = eina_range_from_to(efl_text_cursor_object_position_get(en->sel_start), + efl_text_cursor_object_position_get(en->sel_end)); efl_event_callback_call(o, EFL_TEXT_INTERACTIVE_EVENT_SELECTION_CHANGED, &range); } } static void -_sel_extend(Efl_Text_Cursor *c, Evas_Object *o, Efl_Ui_Internal_Text_Interactive_Data *en) +_sel_extend(Efl_Text_Cursor_Object *c, Evas_Object *o, Efl_Ui_Internal_Text_Interactive_Data *en) { _sel_enable(o, en); - if (efl_text_cursor_equal(c, en->sel_end)) return; + if (efl_text_cursor_object_equal(c, en->sel_end)) return; _sel_watch_freeze(en); _cur_pos_copy(c, en->sel_end); @@ -919,7 +919,7 @@ _efl_ui_internal_text_interactive_efl_text_interactive_have_selection_get( const Eo *obj EINA_UNUSED, Efl_Ui_Internal_Text_Interactive_Data *en) { if (!en->have_selection) return en->have_selection; - return !efl_text_cursor_equal(en->sel_start, en->sel_end); + return !efl_text_cursor_object_equal(en->sel_start, en->sel_end); } @@ -933,8 +933,8 @@ _efl_ui_internal_text_interactive_efl_text_interactive_all_select( Eo *c1 = efl_canvas_textblock_cursor_create(obj); Eo *c2 = efl_canvas_textblock_cursor_create(obj); - efl_text_cursor_move(c1, EFL_TEXT_CURSOR_MOVE_TYPE_FIRST); - efl_text_cursor_move(c2, EFL_TEXT_CURSOR_MOVE_TYPE_LAST); + efl_text_cursor_object_move(c1, EFL_TEXT_CURSOR_MOVE_TYPE_FIRST); + efl_text_cursor_object_move(c2, EFL_TEXT_CURSOR_MOVE_TYPE_LAST); efl_text_interactive_selection_cursors_set(obj, c1, c2); @@ -944,14 +944,14 @@ _efl_ui_internal_text_interactive_efl_text_interactive_all_select( static void -_range_del_emit(Evas_Object *obj, Efl_Text_Cursor *cur1, Efl_Text_Cursor *cur2) +_range_del_emit(Evas_Object *obj, Efl_Text_Cursor_Object *cur1, Efl_Text_Cursor_Object *cur2) { size_t start, end; char *tmp; Efl_Text_Change_Info info = { NULL, 0, 0, 0, 0 }; - start = efl_text_cursor_position_get(cur1); - end = efl_text_cursor_position_get(cur2); + start = efl_text_cursor_object_position_get(cur1); + end = efl_text_cursor_object_position_get(cur2); if (start == end) return; @@ -959,10 +959,10 @@ _range_del_emit(Evas_Object *obj, Efl_Text_Cursor *cur1, Efl_Text_Cursor *cur2) info.position = start; info.length = end - start; - tmp = efl_text_cursor_range_text_get(cur1, cur2); + tmp = efl_text_cursor_object_range_text_get(cur1, cur2); info.content = tmp; - efl_text_cursor_range_delete(cur1, cur2); + efl_text_cursor_object_range_delete(cur1, cur2); efl_event_callback_call(obj, EFL_TEXT_INTERACTIVE_EVENT_CHANGED_USER, &info); if (tmp) free(tmp); @@ -976,25 +976,25 @@ _sel_range_del_emit(Evas_Object *obj, Efl_Ui_Internal_Text_Interactive_Data *en) } static void -_delete_emit(Eo *obj, Efl_Text_Cursor *c, Efl_Ui_Internal_Text_Interactive_Data *en EINA_UNUSED, size_t pos, +_delete_emit(Eo *obj, Efl_Text_Cursor_Object *c, Efl_Ui_Internal_Text_Interactive_Data *en EINA_UNUSED, size_t pos, Eina_Bool backspace) { Eo * cur = efl_duplicate(c); if (backspace) { - if (!efl_text_cursor_move(cur, EFL_TEXT_CURSOR_MOVE_TYPE_CHARACTER_PREVIOUS)) + if (!efl_text_cursor_object_move(cur, EFL_TEXT_CURSOR_MOVE_TYPE_CHARACTER_PREVIOUS)) { return; } - efl_text_cursor_move(cur, EFL_TEXT_CURSOR_MOVE_TYPE_CHARACTER_NEXT); + efl_text_cursor_object_move(cur, EFL_TEXT_CURSOR_MOVE_TYPE_CHARACTER_NEXT); } else { - if (!efl_text_cursor_move(cur, EFL_TEXT_CURSOR_MOVE_TYPE_CHARACTER_NEXT)) + if (!efl_text_cursor_object_move(cur, EFL_TEXT_CURSOR_MOVE_TYPE_CHARACTER_NEXT)) { return; } - efl_text_cursor_move(cur, EFL_TEXT_CURSOR_MOVE_TYPE_CHARACTER_PREVIOUS); + efl_text_cursor_object_move(cur, EFL_TEXT_CURSOR_MOVE_TYPE_CHARACTER_PREVIOUS); } efl_del(cur); cur = NULL; @@ -1006,7 +1006,7 @@ _delete_emit(Eo *obj, Efl_Text_Cursor *c, Efl_Ui_Internal_Text_Interactive_Data { Evas_Textblock_Cursor *cc = evas_object_textblock_cursor_new(obj); - evas_textblock_cursor_copy(efl_text_cursor_handle_get(c), cc); + evas_textblock_cursor_copy(efl_text_cursor_object_handle_get(c), cc); Eina_Bool remove_cluster = evas_textblock_cursor_at_cluster_as_single_glyph(cc,EINA_FALSE); if (remove_cluster) { @@ -1020,14 +1020,14 @@ _delete_emit(Eo *obj, Efl_Text_Cursor *c, Efl_Ui_Internal_Text_Interactive_Data info.position = evas_textblock_cursor_pos_get(cc); info.length = pos -info.position; - tmp = evas_textblock_cursor_range_text_get(efl_text_cursor_handle_get(c), cc, EVAS_TEXTBLOCK_TEXT_MARKUP); - evas_textblock_cursor_range_delete(efl_text_cursor_handle_get(c), cc); + tmp = evas_textblock_cursor_range_text_get(efl_text_cursor_object_handle_get(c), cc, EVAS_TEXTBLOCK_TEXT_MARKUP); + evas_textblock_cursor_range_delete(efl_text_cursor_object_handle_get(c), cc); evas_textblock_cursor_free(cc); } else { Evas_Textblock_Cursor *cc = evas_object_textblock_cursor_new(obj); - evas_textblock_cursor_copy(efl_text_cursor_handle_get(c), cc); + evas_textblock_cursor_copy(efl_text_cursor_object_handle_get(c), cc); Eina_Bool remove_cluster = evas_textblock_cursor_at_cluster_as_single_glyph(cc,EINA_TRUE); if (remove_cluster) @@ -1042,8 +1042,8 @@ _delete_emit(Eo *obj, Efl_Text_Cursor *c, Efl_Ui_Internal_Text_Interactive_Data info.position = pos; info.length = evas_textblock_cursor_pos_get(cc) - info.position; - tmp = evas_textblock_cursor_range_text_get(efl_text_cursor_handle_get(c), cc, EVAS_TEXTBLOCK_TEXT_MARKUP); - evas_textblock_cursor_range_delete(efl_text_cursor_handle_get(c), cc); + tmp = evas_textblock_cursor_range_text_get(efl_text_cursor_object_handle_get(c), cc, EVAS_TEXTBLOCK_TEXT_MARKUP); + evas_textblock_cursor_range_delete(efl_text_cursor_object_handle_get(c), cc); evas_textblock_cursor_free(cc); } @@ -1087,7 +1087,7 @@ _compose_seq_reset(Efl_Ui_Internal_Text_Interactive_Data *en) * movement_forward: if the movement we are going to do is forward (towards the end of the textblock) */ static void -_key_down_sel_pre(Efl_Ui_Internal_Text_Interactive *obj, Efl_Text_Cursor *cur, Efl_Ui_Internal_Text_Interactive_Data *en, Eina_Bool shift, Eina_Bool movement_forward) +_key_down_sel_pre(Efl_Ui_Internal_Text_Interactive *obj, Efl_Text_Cursor_Object *cur, Efl_Ui_Internal_Text_Interactive_Data *en, Eina_Bool shift, Eina_Bool movement_forward) { if (en->select_allow) { @@ -1097,7 +1097,7 @@ _key_down_sel_pre(Efl_Ui_Internal_Text_Interactive *obj, Efl_Text_Cursor *cur, E } else if (en->have_selection) { - Eina_Bool sel_forward = efl_text_cursor_compare(en->sel_start, en->sel_end); + Eina_Bool sel_forward = efl_text_cursor_object_compare(en->sel_start, en->sel_end); if ((sel_forward && movement_forward) || (!sel_forward && !movement_forward)) _cur_pos_copy(en->sel_end, cur); else @@ -1109,7 +1109,7 @@ _key_down_sel_pre(Efl_Ui_Internal_Text_Interactive *obj, Efl_Text_Cursor *cur, E } static void -_key_down_sel_post(Efl_Ui_Internal_Text_Interactive *obj, Efl_Text_Cursor *cur, Efl_Ui_Internal_Text_Interactive_Data *en, Eina_Bool shift) +_key_down_sel_post(Efl_Ui_Internal_Text_Interactive *obj, Efl_Text_Cursor_Object *cur, Efl_Ui_Internal_Text_Interactive_Data *en, Eina_Bool shift) { if (en->select_allow) { @@ -1122,7 +1122,7 @@ static void _key_down_cb(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info) { Evas_Event_Key_Down *ev = event_info; - Efl_Text_Cursor *cur; + Efl_Text_Cursor_Object *cur; Eina_Bool control, alt, shift; #if defined(__APPLE__) && defined(__MACH__) Eina_Bool super, altgr; @@ -1162,7 +1162,7 @@ _key_down_cb(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj, void #endif cur = efl_text_interactive_main_cursor_get(obj); - old_cur_pos = efl_text_cursor_position_get(cur); + old_cur_pos = efl_text_cursor_object_position_get(cur); if (old_cur_pos < 0) return; control = evas_key_modifier_is_set(ev->modifiers, "Control"); @@ -1217,7 +1217,7 @@ _key_down_cb(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj, void if (efl_text_interactive_have_selection_get(obj)) ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; - if (efl_text_cursor_line_jump_by(cur, -1)) + if (efl_text_cursor_object_line_jump_by(cur, -1)) ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; _key_down_sel_post(obj, cur, en, shift); @@ -1233,7 +1233,7 @@ _key_down_cb(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj, void if (efl_text_interactive_have_selection_get(obj)) ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; - if (efl_text_cursor_line_jump_by(cur, 1)) + if (efl_text_cursor_object_line_jump_by(cur, 1)) ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; _key_down_sel_post(obj, cur, en, shift); @@ -1246,14 +1246,14 @@ _key_down_cb(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj, void _key_down_sel_pre(obj, cur, en, shift, EINA_FALSE); #if defined(__APPLE__) && defined(__MACH__) - if (altgr) efl_text_cursor_move(cur, EFL_TEXT_CURSOR_MOVE_TYPE_WORD_START); + if (altgr) efl_text_cursor_object_move(cur, EFL_TEXT_CURSOR_MOVE_TYPE_WORD_START); #else /* If control is pressed, go to the start of the word */ - if (control) efl_text_cursor_move(cur, EFL_TEXT_CURSOR_MOVE_TYPE_WORD_START); + if (control) efl_text_cursor_object_move(cur, EFL_TEXT_CURSOR_MOVE_TYPE_WORD_START); #endif if (efl_text_interactive_have_selection_get(obj)) ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; - if (efl_text_cursor_move(cur,EFL_TEXT_CURSOR_MOVE_TYPE_CHARACTER_PREVIOUS)) + if (efl_text_cursor_object_move(cur,EFL_TEXT_CURSOR_MOVE_TYPE_CHARACTER_PREVIOUS)) ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; _key_down_sel_post(obj, cur, en, shift); @@ -1265,14 +1265,14 @@ _key_down_cb(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj, void _key_down_sel_pre(obj, cur, en, shift, EINA_TRUE); #if defined(__APPLE__) && defined(__MACH__) - if (altgr) efl_text_cursor_move(cur, EFL_TEXT_CURSOR_MOVE_TYPE_WORD_END); + if (altgr) efl_text_cursor_object_move(cur, EFL_TEXT_CURSOR_MOVE_TYPE_WORD_END); #else /* If control is pressed, go to the end of the word */ - if (control) efl_text_cursor_move(cur, EFL_TEXT_CURSOR_MOVE_TYPE_WORD_END); + if (control) efl_text_cursor_object_move(cur, EFL_TEXT_CURSOR_MOVE_TYPE_WORD_END); #endif if (efl_text_interactive_have_selection_get(obj)) ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; - if (efl_text_cursor_move(cur, EFL_TEXT_CURSOR_MOVE_TYPE_CHARACTER_NEXT)) + if (efl_text_cursor_object_move(cur, EFL_TEXT_CURSOR_MOVE_TYPE_CHARACTER_NEXT)) ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; _key_down_sel_post(obj, cur, en, shift); @@ -1283,10 +1283,10 @@ _key_down_cb(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj, void if (control && !en->have_selection) { // del to start of previous word - Efl_Text_Cursor *tc = efl_canvas_textblock_cursor_create(obj); + Efl_Text_Cursor_Object *tc = efl_canvas_textblock_cursor_create(obj); _cur_pos_copy(cur, tc); - efl_text_cursor_move(cur, EFL_TEXT_CURSOR_MOVE_TYPE_CHARACTER_PREVIOUS); - efl_text_cursor_move(cur, EFL_TEXT_CURSOR_MOVE_TYPE_WORD_START); + efl_text_cursor_object_move(cur, EFL_TEXT_CURSOR_MOVE_TYPE_CHARACTER_PREVIOUS); + efl_text_cursor_object_move(cur, EFL_TEXT_CURSOR_MOVE_TYPE_WORD_START); _range_del_emit(obj, cur, tc); @@ -1317,11 +1317,11 @@ _key_down_cb(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj, void if (control) { // del to end of next word - Efl_Text_Cursor *tc = efl_canvas_textblock_cursor_create(obj); + Efl_Text_Cursor_Object *tc = efl_canvas_textblock_cursor_create(obj); _cur_pos_copy(cur, tc); - efl_text_cursor_move(cur, EFL_TEXT_CURSOR_MOVE_TYPE_WORD_END); - efl_text_cursor_move(cur, EFL_TEXT_CURSOR_MOVE_TYPE_CHARACTER_NEXT); + efl_text_cursor_object_move(cur, EFL_TEXT_CURSOR_MOVE_TYPE_WORD_END); + efl_text_cursor_object_move(cur, EFL_TEXT_CURSOR_MOVE_TYPE_CHARACTER_NEXT); _range_del_emit(obj, cur, tc); @@ -1354,9 +1354,9 @@ _key_down_cb(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj, void _key_down_sel_pre(obj, cur, en, shift, EINA_FALSE); if ((control) && (multiline)) - efl_text_cursor_move(cur, EFL_TEXT_CURSOR_MOVE_TYPE_FIRST); + efl_text_cursor_object_move(cur, EFL_TEXT_CURSOR_MOVE_TYPE_FIRST); else - efl_text_cursor_move(cur, EFL_TEXT_CURSOR_MOVE_TYPE_LINE_START); + efl_text_cursor_object_move(cur, EFL_TEXT_CURSOR_MOVE_TYPE_LINE_START); _key_down_sel_post(obj, cur, en, shift); ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; @@ -1369,9 +1369,9 @@ _key_down_cb(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj, void _key_down_sel_pre(obj, cur, en, shift, EINA_TRUE); if ((control) && (multiline)) - efl_text_cursor_move(cur, EFL_TEXT_CURSOR_MOVE_TYPE_LAST); + efl_text_cursor_object_move(cur, EFL_TEXT_CURSOR_MOVE_TYPE_LAST); else - efl_text_cursor_move(cur, EFL_TEXT_CURSOR_MOVE_TYPE_LINE_END); + efl_text_cursor_object_move(cur, EFL_TEXT_CURSOR_MOVE_TYPE_LINE_END); _key_down_sel_post(obj, cur, en, shift); ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; @@ -1444,7 +1444,7 @@ _key_down_cb(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj, void _compose_seq_reset(en); _key_down_sel_pre(obj, cur, en, shift, EINA_FALSE); - efl_text_cursor_line_jump_by(cur, -10); + efl_text_cursor_object_line_jump_by(cur, -10); _key_down_sel_post(obj, cur, en, shift); ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; @@ -1455,7 +1455,7 @@ _key_down_cb(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj, void _compose_seq_reset(en); _key_down_sel_pre(obj, cur, en, shift, EINA_TRUE); - efl_text_cursor_line_jump_by(cur, 10); + efl_text_cursor_object_line_jump_by(cur, 10); _key_down_sel_post(obj, cur, en, shift); ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; @@ -1533,10 +1533,10 @@ _key_down_cb(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj, void } info.type = EFL_TEXT_CHANGE_TYPE_INSERT; info.content = string; - info.position = efl_text_cursor_position_get(cur); + info.position = efl_text_cursor_object_position_get(cur); info.length = eina_unicode_utf8_get_len(string); - efl_text_cursor_text_insert(cur, string); + efl_text_cursor_object_text_insert(cur, string); changed_user = EINA_TRUE; ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; @@ -1553,12 +1553,12 @@ end: } static void -_cursor_char_coord_set(Efl_Canvas_Textblock *obj, Efl_Text_Cursor *cur, Evas_Coord canvasx, Evas_Coord canvasy, Evas_Coord *_cx, Evas_Coord *_cy) +_cursor_char_coord_set(Efl_Canvas_Textblock *obj, Efl_Text_Cursor_Object *cur, Evas_Coord canvasx, Evas_Coord canvasy, Evas_Coord *_cx, Evas_Coord *_cy) { Evas_Coord cx, cy; Evas_Coord x, y, lh = 0, cly = 0; - Efl_Text_Cursor *line_cur; - Efl_Text_Cursor *tc; + Efl_Text_Cursor_Object *line_cur; + Efl_Text_Cursor_Object *tc; tc = efl_canvas_textblock_cursor_create(obj); _cur_pos_copy(cur, tc); @@ -1567,15 +1567,15 @@ _cursor_char_coord_set(Efl_Canvas_Textblock *obj, Efl_Text_Cursor *cur, Evas_Coo cy = canvasy - y; line_cur = efl_canvas_textblock_cursor_create(obj); - efl_text_cursor_move(line_cur, EFL_TEXT_CURSOR_MOVE_TYPE_LAST); - evas_textblock_cursor_line_geometry_get(efl_text_cursor_handle_get(line_cur), NULL, &cly, NULL, &lh); + efl_text_cursor_object_move(line_cur, EFL_TEXT_CURSOR_MOVE_TYPE_LAST); + evas_textblock_cursor_line_geometry_get(efl_text_cursor_object_handle_get(line_cur), NULL, &cly, NULL, &lh); /* Consider a threshold of half the line height */ if (cy > (cly + lh) && cy < (cly + lh + lh / 2)) { cy = cly + lh - 1; // Make it inside Textblock } - efl_text_cursor_move(line_cur, EFL_TEXT_CURSOR_MOVE_TYPE_FIRST); - evas_textblock_cursor_line_geometry_get(efl_text_cursor_handle_get(line_cur), NULL, &cly, NULL, NULL); + efl_text_cursor_object_move(line_cur, EFL_TEXT_CURSOR_MOVE_TYPE_FIRST); + evas_textblock_cursor_line_geometry_get(efl_text_cursor_object_handle_get(line_cur), NULL, &cly, NULL, NULL); if (cy < cly && cy > (cly - lh / 2)) { @@ -1584,7 +1584,7 @@ _cursor_char_coord_set(Efl_Canvas_Textblock *obj, Efl_Text_Cursor *cur, Evas_Coo efl_del(line_cur); /* No need to check return value if not able to set the char coord Textblock * will take care */ - efl_text_cursor_char_coord_set(cur, EINA_POSITION2D(cx, cy)); + efl_text_cursor_object_char_coord_set(cur, EINA_POSITION2D(cx, cy)); if (_cx) *_cx = cx; if (_cy) *_cy = cy; } @@ -1595,8 +1595,8 @@ _mouse_down_cb(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj EIN Evas_Coord cx, cy; Evas_Event_Mouse_Down *ev = event_info; Efl_Ui_Internal_Text_Interactive_Data *en = efl_data_scope_get(obj, MY_CLASS); - Efl_Text_Cursor *cur = efl_text_interactive_main_cursor_get(obj); - Efl_Text_Cursor *tc = NULL; + Efl_Text_Cursor_Object *cur = efl_text_interactive_main_cursor_get(obj); + Efl_Text_Cursor_Object *tc = NULL; Eina_Bool dosel = EINA_FALSE; Eina_Bool shift; @@ -1627,10 +1627,10 @@ _mouse_down_cb(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj EIN { tc = efl_canvas_textblock_cursor_create(obj); _cur_pos_copy(cur, tc); - if (efl_text_cursor_compare(cur, en->sel_start) < 0) - efl_text_cursor_move(cur, EFL_TEXT_CURSOR_MOVE_TYPE_LINE_START); + if (efl_text_cursor_object_compare(cur, en->sel_start) < 0) + efl_text_cursor_object_move(cur, EFL_TEXT_CURSOR_MOVE_TYPE_LINE_START); else - efl_text_cursor_move(cur, EFL_TEXT_CURSOR_MOVE_TYPE_LINE_END); + efl_text_cursor_object_move(cur, EFL_TEXT_CURSOR_MOVE_TYPE_LINE_END); _sel_extend(cur, obj, en); } else @@ -1640,9 +1640,9 @@ _mouse_down_cb(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj EIN _sel_clear(obj, en); tc = efl_canvas_textblock_cursor_create(obj); _cur_pos_copy(cur, tc); - efl_text_cursor_move(cur, EFL_TEXT_CURSOR_MOVE_TYPE_LINE_START); + efl_text_cursor_object_move(cur, EFL_TEXT_CURSOR_MOVE_TYPE_LINE_START); _sel_init(cur, en); - efl_text_cursor_move(cur, EFL_TEXT_CURSOR_MOVE_TYPE_LINE_END); + efl_text_cursor_object_move(cur, EFL_TEXT_CURSOR_MOVE_TYPE_LINE_END); _sel_extend(cur, obj, en); } goto end; @@ -1653,12 +1653,12 @@ _mouse_down_cb(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj EIN { tc = efl_canvas_textblock_cursor_create(obj); _cur_pos_copy(cur, tc); - if (efl_text_cursor_compare(cur, en->sel_start) < 0) - efl_text_cursor_move(cur, EFL_TEXT_CURSOR_MOVE_TYPE_WORD_START); + if (efl_text_cursor_object_compare(cur, en->sel_start) < 0) + efl_text_cursor_object_move(cur, EFL_TEXT_CURSOR_MOVE_TYPE_WORD_START); else { - efl_text_cursor_move(cur, EFL_TEXT_CURSOR_MOVE_TYPE_WORD_END); - efl_text_cursor_move(cur, EFL_TEXT_CURSOR_MOVE_TYPE_CHARACTER_NEXT); + efl_text_cursor_object_move(cur, EFL_TEXT_CURSOR_MOVE_TYPE_WORD_END); + efl_text_cursor_object_move(cur, EFL_TEXT_CURSOR_MOVE_TYPE_CHARACTER_NEXT); } _sel_extend(cur, obj, en); } @@ -1669,10 +1669,10 @@ _mouse_down_cb(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj EIN _sel_clear(obj, en); tc = efl_canvas_textblock_cursor_create(obj); _cur_pos_copy(cur, tc); - efl_text_cursor_move(cur, EFL_TEXT_CURSOR_MOVE_TYPE_WORD_START); + efl_text_cursor_object_move(cur, EFL_TEXT_CURSOR_MOVE_TYPE_WORD_START); _sel_init(cur, en); - efl_text_cursor_move(cur, EFL_TEXT_CURSOR_MOVE_TYPE_WORD_END); - efl_text_cursor_move(cur, EFL_TEXT_CURSOR_MOVE_TYPE_CHARACTER_NEXT); + efl_text_cursor_object_move(cur, EFL_TEXT_CURSOR_MOVE_TYPE_WORD_END); + efl_text_cursor_object_move(cur, EFL_TEXT_CURSOR_MOVE_TYPE_CHARACTER_NEXT); _sel_extend(cur, obj, en); } goto end; @@ -1703,7 +1703,7 @@ _mouse_up_cb(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj, void { Evas_Coord cx, cy; Efl_Ui_Internal_Text_Interactive_Data *en = efl_data_scope_get(obj, MY_CLASS); - Efl_Text_Cursor *cur = efl_text_interactive_main_cursor_get(obj); + Efl_Text_Cursor_Object *cur = efl_text_interactive_main_cursor_get(obj); Evas_Event_Mouse_Up *ev = event_info; if ((!ev) || (ev->button != 1)) return; @@ -1744,10 +1744,10 @@ _mouse_move_cb(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj, vo { Evas_Coord cx, cy; Efl_Ui_Internal_Text_Interactive_Data *en = efl_data_scope_get(obj, MY_CLASS); - Efl_Text_Cursor *cur = efl_text_interactive_main_cursor_get(obj); + Efl_Text_Cursor_Object *cur = efl_text_interactive_main_cursor_get(obj); Evas_Event_Mouse_Move *ev = event_info; Evas_Coord x, y, w, h; - Efl_Text_Cursor *tc; + Efl_Text_Cursor_Object *tc; Eina_Bool multiline; multiline = efl_text_multiline_get(obj); @@ -1774,28 +1774,28 @@ _mouse_move_cb(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj, vo if (multiline) { - efl_text_cursor_char_coord_set(cur, EINA_POSITION2D(cx, cy)); + efl_text_cursor_object_char_coord_set(cur, EINA_POSITION2D(cx, cy)); } else { Evas_Coord lx, ly, lw, lh; - efl_text_cursor_move(cur, EFL_TEXT_CURSOR_MOVE_TYPE_FIRST); - evas_textblock_cursor_line_geometry_get(efl_text_cursor_handle_get(cur), &lx, &ly, &lw, &lh); - efl_text_cursor_char_coord_set(cur, EINA_POSITION2D(cx, ly + (lh / 2))); + efl_text_cursor_object_move(cur, EFL_TEXT_CURSOR_MOVE_TYPE_FIRST); + evas_textblock_cursor_line_geometry_get(efl_text_cursor_object_handle_get(cur), &lx, &ly, &lw, &lh); + efl_text_cursor_object_char_coord_set(cur, EINA_POSITION2D(cx, ly + (lh / 2))); } if (en->select_allow) { _sel_extend(cur, obj, en); - if (!efl_text_cursor_equal(en->sel_start, en->sel_end)) + if (!efl_text_cursor_object_equal(en->sel_start, en->sel_end)) _sel_enable(obj, en); } efl_del(tc); } } -EOLIAN static Efl_Text_Cursor * +EOLIAN static Efl_Text_Cursor_Object * _efl_ui_internal_text_interactive_efl_text_interactive_main_cursor_get(const Eo *obj EINA_UNUSED, Efl_Ui_Internal_Text_Interactive_Data *pd) { return pd->main_cursor; @@ -1833,9 +1833,9 @@ _efl_ui_internal_text_interactive_efl_object_finalize(Eo *obj, Efl_Ui_Internal_T en->sel_start = efl_canvas_textblock_cursor_create(obj); en->sel_end = efl_canvas_textblock_cursor_create(obj); - efl_event_callback_add(en->sel_start, EFL_TEXT_CURSOR_EVENT_CHANGED, + efl_event_callback_add(en->sel_start, EFL_TEXT_CURSOR_OBJECT_EVENT_CHANGED, _sel_cursor_changed, obj); - efl_event_callback_add(en->sel_end, EFL_TEXT_CURSOR_EVENT_CHANGED, + efl_event_callback_add(en->sel_end, EFL_TEXT_CURSOR_OBJECT_EVENT_CHANGED, _sel_cursor_changed, obj); #ifdef HAVE_ECORE_IMF @@ -1908,7 +1908,7 @@ _efl_ui_internal_text_interactive_efl_text_text_set(Eo *eo_obj, Efl_Ui_Internal_ const char *text) { efl_text_set(efl_super(eo_obj, MY_CLASS), text); - efl_text_cursor_move(o->main_cursor, EFL_TEXT_CURSOR_MOVE_TYPE_LAST); + efl_text_cursor_object_move(o->main_cursor, EFL_TEXT_CURSOR_MOVE_TYPE_LAST); } EOLIAN void @@ -1916,7 +1916,7 @@ _efl_ui_internal_text_interactive_efl_text_markup_markup_set(Eo *eo_obj, Efl_Ui_ const char *text) { efl_text_markup_set(efl_super(eo_obj, MY_CLASS), text); - efl_text_cursor_move(o->main_cursor, EFL_TEXT_CURSOR_MOVE_TYPE_LAST); + efl_text_cursor_object_move(o->main_cursor, EFL_TEXT_CURSOR_MOVE_TYPE_LAST); } EOLIAN static void @@ -1939,10 +1939,10 @@ _efl_ui_internal_text_interactive_efl_text_interactive_selection_allowed_get(con } EOLIAN static void -_efl_ui_internal_text_interactive_efl_text_interactive_selection_cursors_get(const Eo *obj EINA_UNUSED, Efl_Ui_Internal_Text_Interactive_Data *pd, Efl_Text_Cursor **start, Efl_Text_Cursor **end) +_efl_ui_internal_text_interactive_efl_text_interactive_selection_cursors_get(const Eo *obj EINA_UNUSED, Efl_Ui_Internal_Text_Interactive_Data *pd, Efl_Text_Cursor_Object **start, Efl_Text_Cursor_Object **end) { - if (efl_text_cursor_position_get(pd->sel_start) > - efl_text_cursor_position_get(pd->sel_end)) + if (efl_text_cursor_object_position_get(pd->sel_start) > + efl_text_cursor_object_position_get(pd->sel_end)) { if (start) *start = pd->sel_end; if (end) *end = pd->sel_start; @@ -1955,16 +1955,16 @@ _efl_ui_internal_text_interactive_efl_text_interactive_selection_cursors_get(con } EOLIAN static void -_efl_ui_internal_text_interactive_efl_text_interactive_selection_cursors_set(Eo *obj EINA_UNUSED, Efl_Ui_Internal_Text_Interactive_Data *en, Efl_Text_Cursor *start, Efl_Text_Cursor *end) +_efl_ui_internal_text_interactive_efl_text_interactive_selection_cursors_set(Eo *obj EINA_UNUSED, Efl_Ui_Internal_Text_Interactive_Data *en, Efl_Text_Cursor_Object *start, Efl_Text_Cursor_Object *end) { if (!efl_text_interactive_selection_allowed_get(obj)) return; - int new_sel_start_pos = efl_text_cursor_position_get(start); - int new_sel_end_pos = efl_text_cursor_position_get(end); + int new_sel_start_pos = efl_text_cursor_object_position_get(start); + int new_sel_end_pos = efl_text_cursor_object_position_get(end); - int current_sel_start_pos = efl_text_cursor_position_get(en->sel_start); - int current_sel_end_pos = efl_text_cursor_position_get(en->sel_end); + int current_sel_start_pos = efl_text_cursor_object_position_get(en->sel_start); + int current_sel_end_pos = efl_text_cursor_object_position_get(en->sel_end); Eina_Bool b_start_changed = (new_sel_start_pos == current_sel_start_pos); Eina_Bool b_end_changed = (new_sel_end_pos == current_sel_end_pos); @@ -1973,8 +1973,8 @@ _efl_ui_internal_text_interactive_efl_text_interactive_selection_cursors_set(Eo return; _sel_watch_freeze(en); - efl_text_cursor_position_set(en->sel_start, new_sel_start_pos); - efl_text_cursor_position_set(en->sel_end, new_sel_end_pos); + efl_text_cursor_object_position_set(en->sel_start, new_sel_start_pos); + efl_text_cursor_object_position_set(en->sel_end, new_sel_end_pos); _sel_watch_thaw(en); _sel_reset(obj, en); } diff --git a/src/lib/elementary/efl_ui_textbox.c b/src/lib/elementary/efl_ui_textbox.c index d6b7b782fd..64f1034638 100644 --- a/src/lib/elementary/efl_ui_textbox.c +++ b/src/lib/elementary/efl_ui_textbox.c @@ -59,7 +59,7 @@ struct _Efl_Ui_Textbox_Data Mod_Api *api; // module api if supplied int cursor_pos; Elm_Scroller_Policy policy_h, policy_v; - Efl_Text_Cursor *sel_handler_cursor; + Efl_Text_Cursor_Object *sel_handler_cursor; struct { Evas_Object *hover_parent; /**< hover parent object. entry is a hover parent object by default */ @@ -311,7 +311,7 @@ _update_selection_handler(Eo *obj) Eina_Position2D off; Evas_Coord hx, hy; Eina_Bool hidden = EINA_FALSE; - Efl_Text_Cursor *sel_start, *sel_end; + Efl_Text_Cursor_Object *sel_start, *sel_end; Eina_Rect rc_tmp; efl_text_interactive_selection_cursors_get(obj, &sel_start, &sel_end); @@ -321,7 +321,7 @@ _update_selection_handler(Eo *obj) //evas_object_geometry_get(sd->entry_edje, &ent_x, &ent_y, NULL, NULL); - rc_tmp = efl_text_cursor_geometry_get(sel_start, EFL_TEXT_CURSOR_TYPE_BEFORE); + rc_tmp = efl_text_cursor_object_cursor_geometry_get(sel_start, EFL_TEXT_CURSOR_TYPE_BEFORE); sx = rc_tmp.x; sy = rc_tmp.y; sh = rc_tmp.h; @@ -352,7 +352,7 @@ _update_selection_handler(Eo *obj) } hidden = EINA_FALSE; - rc_tmp = efl_text_cursor_geometry_get(sel_end, EFL_TEXT_CURSOR_TYPE_BEFORE); + rc_tmp = efl_text_cursor_object_cursor_geometry_get(sel_end, EFL_TEXT_CURSOR_TYPE_BEFORE); ex = rc_tmp.x; ey = rc_tmp.y; eh = rc_tmp.h; @@ -401,7 +401,7 @@ _selection_data_cb(Efl_Ui_Textbox *obj, void *data EINA_UNUSED, const Eina_Value { Eina_Content *content; Eina_Slice slice; - Efl_Text_Cursor *cur, *start, *end; + Efl_Text_Cursor_Object *cur, *start, *end; Efl_Text_Change_Info info = { NULL, 0, 0, 0, 0 }; if (eina_value_type_get(&value) != EINA_VALUE_TYPE_CONTENT) @@ -410,19 +410,19 @@ _selection_data_cb(Efl_Ui_Textbox *obj, void *data EINA_UNUSED, const Eina_Value content = eina_value_to_content(&value); slice = eina_content_data_get(content); efl_text_interactive_selection_cursors_get(obj, &start, &end); - if (!efl_text_cursor_equal(start, end)) + if (!efl_text_cursor_object_equal(start, end)) { - efl_text_cursor_range_delete(start, end); + efl_text_cursor_object_range_delete(start, end); efl_text_interactive_all_unselect(obj); } cur = efl_text_interactive_main_cursor_get(obj); info.type = EFL_TEXT_CHANGE_TYPE_INSERT; - info.position = efl_text_cursor_position_get(cur); + info.position = efl_text_cursor_object_position_get(cur); info.length = slice.len; info.content = slice.mem; if (eina_streq(eina_content_type_get(content), "application/x-elementary-markup")) { - efl_text_cursor_markup_insert(cur, slice.mem); + efl_text_cursor_object_markup_insert(cur, slice.mem); } else if (!strncmp(eina_content_type_get(content), "image/", strlen("image/"))) { @@ -430,12 +430,12 @@ _selection_data_cb(Efl_Ui_Textbox *obj, void *data EINA_UNUSED, const Eina_Value eina_strbuf_append_printf(result, ""); - efl_text_cursor_markup_insert(cur, eina_strbuf_string_get(result)); + efl_text_cursor_object_markup_insert(cur, eina_strbuf_string_get(result)); eina_strbuf_free(result); } else // TEXT { - efl_text_cursor_text_insert(cur, slice.mem); + efl_text_cursor_object_text_insert(cur, slice.mem); } efl_event_callback_call(obj, EFL_TEXT_INTERACTIVE_EVENT_CHANGED_USER, &info); @@ -649,10 +649,10 @@ _cursor_geometry_recalc(Evas_Object *obj) cx = cy = cw = ch = 0; - Efl_Text_Cursor *main_cur = + Efl_Text_Cursor_Object *main_cur = efl_text_interactive_main_cursor_get(obj); - rc = efl_text_cursor_geometry_get(main_cur, EFL_TEXT_CURSOR_TYPE_BEFORE); + rc = efl_text_cursor_object_cursor_geometry_get(main_cur, EFL_TEXT_CURSOR_TYPE_BEFORE); cx = rc.x; cy = rc.y; cw = rc.w; @@ -779,7 +779,7 @@ _efl_ui_textbox_efl_ui_widget_interest_region_get(const Eo *obj EINA_UNUSED, Efl Eina_Rect edje, elm; Eina_Rect r = {}; - r = efl_text_cursor_geometry_get( + r = efl_text_cursor_object_cursor_geometry_get( efl_text_interactive_main_cursor_get(obj), EFL_TEXT_CURSOR_TYPE_BEFORE); if (!efl_text_multiline_get(obj)) @@ -849,11 +849,11 @@ _selection_store(Efl_Ui_Cnp_Buffer buffer, Evas_Object *obj) { char *sel; - Efl_Text_Cursor *start, *end; + Efl_Text_Cursor_Object *start, *end; Eina_Content *content; efl_text_interactive_selection_cursors_get(obj, &start, &end); - sel = efl_text_cursor_range_markup_get(start, end); + sel = efl_text_cursor_object_range_markup_get(start, end); if ((!sel) || (!sel[0])) return; /* avoid deleting our own selection */ @@ -1254,7 +1254,7 @@ _selection_handlers_offset_calc(Evas_Object *obj, Evas_Object *handler) EFL_UI_TEXT_DATA_GET(obj, sd); pos = efl_gfx_entity_position_get(sd->text_obj); - rc = efl_text_cursor_geometry_get( + rc = efl_text_cursor_object_cursor_geometry_get( efl_text_interactive_main_cursor_get(obj), EFL_TEXT_CURSOR_TYPE_BEFORE); cx = rc.x; cy = rc.y; @@ -1283,8 +1283,8 @@ _start_handler_mouse_down_cb(void *data, const Efl_Event *event EINA_UNUSED) EFL_UI_TEXT_DATA_GET(data, sd); int start_pos, end_pos, pos; - Efl_Text_Cursor *sel_start, *sel_end; - Efl_Text_Cursor *main_cur; + Efl_Text_Cursor_Object *sel_start, *sel_end; + Efl_Text_Cursor_Object *main_cur; Eo *text_obj = sd->text_obj; @@ -1294,8 +1294,8 @@ _start_handler_mouse_down_cb(void *data, const Efl_Event *event EINA_UNUSED) efl_text_interactive_selection_cursors_get(text_obj, &sel_start, &sel_end); main_cur = efl_text_interactive_main_cursor_get(text_obj); - start_pos = efl_text_cursor_position_get(sel_start); - end_pos = efl_text_cursor_position_get(sel_end); + start_pos = efl_text_cursor_object_position_get(sel_start); + end_pos = efl_text_cursor_object_position_get(sel_end); if (start_pos <= end_pos) { @@ -1307,7 +1307,7 @@ _start_handler_mouse_down_cb(void *data, const Efl_Event *event EINA_UNUSED) pos = end_pos; sd->sel_handler_cursor = sel_end; } - efl_text_cursor_position_set(main_cur, pos); + efl_text_cursor_object_position_set(main_cur, pos); _selection_handlers_offset_calc(data, sd->start_handler); } @@ -1341,11 +1341,11 @@ _start_handler_mouse_move_cb(void *data, const Efl_Event *event) cy = ev->cur.y - sd->oy - re.y; if (cx <= 0) cx = 1; - efl_text_cursor_char_coord_set(sd->sel_handler_cursor, EINA_POSITION2D(cx, cy)); - pos = efl_text_cursor_position_get(sd->sel_handler_cursor); + efl_text_cursor_object_char_coord_set(sd->sel_handler_cursor, EINA_POSITION2D(cx, cy)); + pos = efl_text_cursor_object_position_get(sd->sel_handler_cursor); /* Set the main cursor. */ - efl_text_cursor_position_set( + efl_text_cursor_object_position_set( efl_text_interactive_main_cursor_get(sd->text_obj), pos); efl_input_clickable_longpress_abort(data, 1); @@ -1357,8 +1357,8 @@ _end_handler_mouse_down_cb(void *data, const Efl_Event *event EINA_UNUSED) { EFL_UI_TEXT_DATA_GET(data, sd); - Efl_Text_Cursor *sel_start, *sel_end; - Efl_Text_Cursor *main_cur; + Efl_Text_Cursor_Object *sel_start, *sel_end; + Efl_Text_Cursor_Object *main_cur; int pos, start_pos, end_pos; sd->end_handler_down = EINA_TRUE; @@ -1368,8 +1368,8 @@ _end_handler_mouse_down_cb(void *data, const Efl_Event *event EINA_UNUSED) efl_text_interactive_selection_cursors_get(text_obj, &sel_start, &sel_end); main_cur = efl_text_interactive_main_cursor_get(text_obj); - start_pos = efl_text_cursor_position_get(sel_start); - end_pos = efl_text_cursor_position_get(sel_end); + start_pos = efl_text_cursor_object_position_get(sel_start); + end_pos = efl_text_cursor_object_position_get(sel_end); if (start_pos < end_pos) { @@ -1382,7 +1382,7 @@ _end_handler_mouse_down_cb(void *data, const Efl_Event *event EINA_UNUSED) sd->sel_handler_cursor = sel_start; } - efl_text_cursor_position_set(main_cur, pos); + efl_text_cursor_object_position_set(main_cur, pos); _selection_handlers_offset_calc(data, sd->end_handler); } @@ -1416,10 +1416,10 @@ _end_handler_mouse_move_cb(void *data, const Efl_Event *event) cy = ev->cur.y - sd->oy - re.y; if (cx <= 0) cx = 1; - efl_text_cursor_char_coord_set(sd->sel_handler_cursor, EINA_POSITION2D(cx, cy)); - pos = efl_text_cursor_position_get(sd->sel_handler_cursor); + efl_text_cursor_object_char_coord_set(sd->sel_handler_cursor, EINA_POSITION2D(cx, cy)); + pos = efl_text_cursor_object_position_get(sd->sel_handler_cursor); /* Set the main cursor. */ - efl_text_cursor_position_set(efl_text_interactive_main_cursor_get(data), pos); + efl_text_cursor_object_position_set(efl_text_interactive_main_cursor_get(data), pos); efl_input_clickable_longpress_abort(data, 1); sd->long_pressed = EINA_FALSE; } @@ -1707,7 +1707,7 @@ _efl_ui_textbox_efl_object_finalize(Eo *obj, _efl_ui_textbox_selection_start_clear_cb, obj); efl_event_callback_add(sd->text_obj, EFL_TEXT_INTERACTIVE_EVENT_SELECTION_CHANGED, _efl_ui_textbox_selection_changed_cb, obj); - efl_event_callback_add(efl_text_interactive_main_cursor_get(sd->text_obj), EFL_TEXT_CURSOR_EVENT_CHANGED, + efl_event_callback_add(efl_text_interactive_main_cursor_get(sd->text_obj), EFL_TEXT_CURSOR_OBJECT_EVENT_CHANGED, _efl_ui_textbox_cursor_changed_cb, obj); efl_event_callback_add(sd->text_obj, EFL_GFX_ENTITY_EVENT_POSITION_CHANGED, _text_position_changed_cb, obj); @@ -1822,12 +1822,12 @@ _efl_ui_textbox_calc_force(Eo *obj, Efl_Ui_Textbox_Data *sd) static const char* _efl_ui_textbox_selection_get(const Eo *obj, Efl_Ui_Textbox_Data *sd EINA_UNUSED) { - Efl_Text_Cursor *start_obj, *end_obj; + Efl_Text_Cursor_Object *start_obj, *end_obj; if ((efl_text_password_get(obj))) return NULL; efl_text_interactive_selection_cursors_get(obj, &start_obj, &end_obj); - return efl_text_cursor_range_text_get(start_obj, end_obj); + return efl_text_cursor_object_range_text_get(start_obj, end_obj); } EOLIAN static void @@ -1846,17 +1846,17 @@ _efl_ui_textbox_selection_handles_enabled_get(const Eo *obj EINA_UNUSED, Efl_Ui_ static void _efl_ui_textbox_entry_insert(Eo *obj, Efl_Ui_Textbox_Data *sd, const char *entry) { - Efl_Text_Cursor *cur_obj = efl_text_interactive_main_cursor_get(obj); - efl_text_cursor_text_insert(cur_obj, entry); + Efl_Text_Cursor_Object *cur_obj = efl_text_interactive_main_cursor_get(obj); + efl_text_cursor_object_text_insert(cur_obj, entry); sd->text_changed = EINA_TRUE; efl_canvas_group_change(obj); } -EOLIAN static Efl_Text_Cursor * +EOLIAN static Efl_Text_Cursor_Object * _efl_ui_textbox_cursor_create(Eo *obj, Efl_Ui_Textbox_Data *pd) { - Eo* cursor = efl_text_cursor_create(pd->text_obj);; - efl_text_cursor_text_object_set(cursor, pd->text_obj, obj); + Eo* cursor = efl_text_cursor_object_create(pd->text_obj);; + efl_text_cursor_object_text_object_set(cursor, pd->text_obj, obj); return cursor; } @@ -1887,31 +1887,31 @@ _efl_ui_textbox_efl_text_interactive_editable_set(Eo *obj, Efl_Ui_Textbox_Data * static void _efl_ui_textbox_select_region_set(Eo *obj, Efl_Ui_Textbox_Data *sd EINA_UNUSED, int start, int end) { - Efl_Text_Cursor *sel_start, *sel_end; + Efl_Text_Cursor_Object *sel_start, *sel_end; if (efl_text_password_get(obj)) return; efl_text_interactive_selection_cursors_get(obj, &sel_start, &sel_end); - efl_text_cursor_position_set(sel_start, start); - efl_text_cursor_position_set(sel_end, end); + efl_text_cursor_object_position_set(sel_start, start); + efl_text_cursor_object_position_set(sel_end, end); } static void _efl_ui_textbox_select_region_get(Eo *obj, int *start, int *end) { - Efl_Text_Cursor *sel_start, *sel_end; + Efl_Text_Cursor_Object *sel_start, *sel_end; efl_text_interactive_selection_cursors_get(obj, &sel_start, &sel_end); - if(start) *start = efl_text_cursor_position_get(sel_start); - if(end) *end = efl_text_cursor_position_get(sel_end); + if(start) *start = efl_text_cursor_object_position_get(sel_start); + if(end) *end = efl_text_cursor_object_position_get(sel_end); } EOLIAN static void _efl_ui_textbox_selection_cut(Eo *obj, Efl_Ui_Textbox_Data *sd) { - Efl_Text_Cursor *start, *end; + Efl_Text_Cursor_Object *start, *end; Efl_Text_Change_Info info = { NULL, 0, 0, 0, 0 }; char *tmp; int end_pos, start_pos; @@ -1931,14 +1931,14 @@ _efl_ui_textbox_selection_cut(Eo *obj, Efl_Ui_Textbox_Data *sd) _selection_store(EFL_UI_CNP_BUFFER_COPY_AND_PASTE, obj); efl_text_interactive_selection_cursors_get(obj, &start, &end); - start_pos = efl_text_cursor_position_get(start); - end_pos = efl_text_cursor_position_get(end); - tmp = efl_text_cursor_range_text_get(start, end); + start_pos = efl_text_cursor_object_position_get(start); + end_pos = efl_text_cursor_object_position_get(end); + tmp = efl_text_cursor_object_range_text_get(start, end); info.type = EFL_TEXT_CHANGE_TYPE_REMOVE; info.position = start_pos; info.length = end_pos - start_pos; info.content = tmp; - efl_text_cursor_range_delete(start, end); + efl_text_cursor_object_range_delete(start, end); efl_event_callback_call(obj, EFL_TEXT_INTERACTIVE_EVENT_CHANGED_USER, &info); free(tmp); tmp = NULL; @@ -2220,13 +2220,13 @@ fail: EOLIAN static int _efl_ui_textbox_efl_access_text_caret_offset_get(const Eo *obj, Efl_Ui_Textbox_Data *_pd EINA_UNUSED) { - return efl_text_cursor_position_get(efl_text_interactive_main_cursor_get(obj)); + return efl_text_cursor_object_position_get(efl_text_interactive_main_cursor_get(obj)); } EOLIAN static Eina_Bool _efl_ui_textbox_efl_access_text_caret_offset_set(Eo *obj, Efl_Ui_Textbox_Data *_pd EINA_UNUSED, int offset) { - efl_text_cursor_position_set(efl_text_interactive_main_cursor_get(obj), offset); + efl_text_cursor_object_position_set(efl_text_interactive_main_cursor_get(obj), offset); return EINA_TRUE; } @@ -2410,7 +2410,7 @@ _textblock_node_format_to_atspi_text_attr(Efl_Text_Attribute_Handle *annotation) EOLIAN static Eina_Bool _efl_ui_textbox_efl_access_text_attribute_get(const Eo *obj, Efl_Ui_Textbox_Data *_pd EINA_UNUSED, const char *attr_name EINA_UNUSED, int *start_offset, int *end_offset, char **value) { - Efl_Text_Cursor *cur1, *cur2; + Efl_Text_Cursor_Object *cur1, *cur2; Efl_Access_Text_Attribute *attr; Eina_Iterator *annotations; Efl_Text_Attribute_Handle *an; @@ -2426,8 +2426,8 @@ _efl_ui_textbox_efl_access_text_attribute_get(const Eo *obj, Efl_Ui_Textbox_Data return EINA_FALSE; } - efl_text_cursor_position_set(cur1, *start_offset); - efl_text_cursor_position_set(cur2, *end_offset); + efl_text_cursor_object_position_set(cur1, *start_offset); + efl_text_cursor_object_position_set(cur2, *end_offset); annotations = efl_text_formatter_range_attributes_get(cur1, cur2); @@ -2456,7 +2456,7 @@ _efl_ui_textbox_efl_access_text_attribute_get(const Eo *obj, Efl_Ui_Textbox_Data EOLIAN static Eina_List* _efl_ui_textbox_efl_access_text_text_attributes_get(const Eo *obj, Efl_Ui_Textbox_Data *pd EINA_UNUSED, int *start_offset, int *end_offset) { - Efl_Text_Cursor *cur1, *cur2; + Efl_Text_Cursor_Object *cur1, *cur2; Eina_List *ret = NULL; Efl_Access_Text_Attribute *attr; Eina_Iterator *annotations; @@ -2472,8 +2472,8 @@ _efl_ui_textbox_efl_access_text_text_attributes_get(const Eo *obj, Efl_Ui_Textbo return NULL; } - efl_text_cursor_position_set(cur1, *start_offset); - efl_text_cursor_position_set(cur2, *end_offset); + efl_text_cursor_object_position_set(cur1, *start_offset); + efl_text_cursor_object_position_set(cur2, *end_offset); annotations = efl_text_formatter_range_attributes_get(cur1, cur2); @@ -2498,7 +2498,7 @@ _efl_ui_textbox_efl_access_text_default_attributes_get(const Eo *obj, Efl_Ui_Tex { Eina_List *ret = NULL; Efl_Access_Text_Attribute *attr; - Efl_Text_Cursor *start, *end; + Efl_Text_Cursor_Object *start, *end; Eina_Iterator *annotations; Efl_Text_Attribute_Handle *an; @@ -2507,8 +2507,8 @@ _efl_ui_textbox_efl_access_text_default_attributes_get(const Eo *obj, Efl_Ui_Tex start = efl_ui_textbox_cursor_create(mobj); end = efl_ui_textbox_cursor_create(mobj); - efl_text_cursor_move(start, EFL_TEXT_CURSOR_MOVE_TYPE_FIRST); - efl_text_cursor_move(end, EFL_TEXT_CURSOR_MOVE_TYPE_LAST); + efl_text_cursor_object_move(start, EFL_TEXT_CURSOR_MOVE_TYPE_FIRST); + efl_text_cursor_object_move(end, EFL_TEXT_CURSOR_MOVE_TYPE_LAST); annotations = efl_text_formatter_range_attributes_get(start, end); @@ -2533,8 +2533,8 @@ _efl_ui_textbox_efl_access_editable_text_text_content_set(Eo *obj, Efl_Ui_Textbo EOLIAN static Eina_Bool _efl_ui_textbox_efl_access_editable_text_insert(Eo *obj, Efl_Ui_Textbox_Data *pd, const char *string, int position) { - Efl_Text_Cursor *cur_obj = efl_text_interactive_main_cursor_get(obj); - efl_text_cursor_position_set(cur_obj, position); + Efl_Text_Cursor_Object *cur_obj = efl_text_interactive_main_cursor_get(obj); + efl_text_cursor_object_position_set(cur_obj, position); _efl_ui_textbox_entry_insert(obj, pd, string); return EINA_TRUE; @@ -2583,8 +2583,8 @@ _efl_ui_textbox_efl_access_editable_text_delete(Eo *obj, Efl_Ui_Textbox_Data *pd EOLIAN static Eina_Bool _efl_ui_textbox_efl_access_editable_text_paste(Eo *obj, Efl_Ui_Textbox_Data *_pd EINA_UNUSED, int position) { - Efl_Text_Cursor *cur_obj = efl_text_interactive_main_cursor_get(obj); - efl_text_cursor_position_set(cur_obj, position); + Efl_Text_Cursor_Object *cur_obj = efl_text_interactive_main_cursor_get(obj); + efl_text_cursor_object_position_set(cur_obj, position); efl_ui_textbox_selection_paste(obj); return EINA_TRUE; } @@ -2696,8 +2696,8 @@ _update_text_cursors(Eo *obj) xx = yy = ww = hh = -1; off =_decoration_calc_offset(sd); - rc_tmp1 = efl_text_cursor_geometry_get(efl_text_interactive_main_cursor_get(text_obj), EFL_TEXT_CURSOR_TYPE_BEFORE); - bidi_cursor = efl_text_cursor_lower_cursor_geometry_get(efl_text_interactive_main_cursor_get(text_obj), &rc_tmp2); + rc_tmp1 = efl_text_cursor_object_cursor_geometry_get(efl_text_interactive_main_cursor_get(text_obj), EFL_TEXT_CURSOR_TYPE_BEFORE); + bidi_cursor = efl_text_cursor_object_lower_cursor_geometry_get(efl_text_interactive_main_cursor_get(text_obj), &rc_tmp2); xx = rc_tmp1.x; yy = rc_tmp1.y; ww = rc_tmp1.w; @@ -2747,7 +2747,7 @@ static void _update_text_selection(Eo *obj, Eo *text_obj) { Eina_Position2D off; - Efl_Text_Cursor *sel_start, *sel_end; + Efl_Text_Cursor_Object *sel_start, *sel_end; Eina_List *l; Eina_Iterator *range; @@ -2763,7 +2763,7 @@ _update_text_selection(Eo *obj, Eo *text_obj) efl_text_interactive_selection_cursors_get(text_obj, &sel_start, &sel_end); - range = efl_text_cursor_range_geometry_get(sel_start, sel_end); + range = efl_text_cursor_object_range_geometry_get(sel_start, sel_end); l = sd->sel; EINA_ITERATOR_FOREACH(range, r) @@ -2913,7 +2913,7 @@ _anchors_update(Eo *obj, Efl_Ui_Textbox_Data *sd) Evas_Object *smart, *clip; Eina_Iterator *it; Eina_Position2D off; - Efl_Text_Cursor *start, *end; + Efl_Text_Cursor_Object *start, *end; Efl_Text_Attribute_Handle *an; Eina_List *i, *ii; Anchor *anc; @@ -2927,8 +2927,8 @@ _anchors_update(Eo *obj, Efl_Ui_Textbox_Data *sd) end = efl_canvas_textblock_cursor_create(sd->text_obj); /* Retrieve all annotations in the text. */ - efl_text_cursor_move(start, EFL_TEXT_CURSOR_MOVE_TYPE_FIRST); - efl_text_cursor_move(end, EFL_TEXT_CURSOR_MOVE_TYPE_LAST); + efl_text_cursor_object_move(start, EFL_TEXT_CURSOR_MOVE_TYPE_FIRST); + efl_text_cursor_object_move(end, EFL_TEXT_CURSOR_MOVE_TYPE_LAST); it = efl_text_formatter_range_attributes_get(start, end); efl_del(start); @@ -2988,7 +2988,7 @@ _anchors_update(Eo *obj, Efl_Ui_Textbox_Data *sd) end = efl_ui_textbox_cursor_create(obj); efl_text_formatter_attribute_cursors_get(anc->annotation, start, end); - range = efl_text_cursor_range_geometry_get(start, end); + range = efl_text_cursor_object_range_geometry_get(start, end); count = eina_list_count(eina_iterator_container_get(range)); // Add additional rectangles if needed diff --git a/src/lib/elementary/efl_ui_textbox.eo b/src/lib/elementary/efl_ui_textbox.eo index 4a9456ffb5..304a6e82ee 100644 --- a/src/lib/elementary/efl_ui_textbox.eo +++ b/src/lib/elementary/efl_ui_textbox.eo @@ -83,7 +83,7 @@ class Efl.Ui.Textbox extends Efl.Ui.Layout_Base implements Efl.Input.Clickable, } cursor_create { [[Creates and returns a new cursor for the text.]] - return: Efl.Text.Cursor @move; [[Text cursor.]] + return: Efl.Text_Cursor.Object @move; [[Text cursor.]] } selection_copy { [[This executes a "copy" action on the selected text in the widget.]] diff --git a/src/lib/elementary/elm_atspi_bridge.c b/src/lib/elementary/elm_atspi_bridge.c index 0693fdb22a..f9d575b973 100644 --- a/src/lib/elementary/elm_atspi_bridge.c +++ b/src/lib/elementary/elm_atspi_bridge.c @@ -1315,30 +1315,30 @@ _text_string_at_offset_get(const Eldbus_Service_Interface *iface, const Eldbus_M if (efl_isa(obj, EFL_TEXT_INTERACTIVE_INTERFACE)) { - Efl_Text_Cursor *sel1 = efl_ui_textbox_cursor_create(obj); - Efl_Text_Cursor *sel2 = efl_ui_textbox_cursor_create(obj); - efl_text_cursor_position_set(sel1, start); - efl_text_cursor_position_set(sel2, start); + Efl_Text_Cursor_Object *sel1 = efl_ui_textbox_cursor_create(obj); + Efl_Text_Cursor_Object *sel2 = efl_ui_textbox_cursor_create(obj); + efl_text_cursor_object_position_set(sel1, start); + efl_text_cursor_object_position_set(sel2, start); switch(gran) { case EFL_ACCESS_TEXT_GRANULARITY_CHAR: - efl_text_cursor_move(sel2, EFL_TEXT_CURSOR_MOVE_TYPE_CHARACTER_NEXT); + efl_text_cursor_object_move(sel2, EFL_TEXT_CURSOR_MOVE_TYPE_CHARACTER_NEXT); break; case EFL_ACCESS_TEXT_GRANULARITY_WORD: - efl_text_cursor_move(sel1, EFL_TEXT_CURSOR_MOVE_TYPE_WORD_START); - efl_text_cursor_move(sel2, EFL_TEXT_CURSOR_MOVE_TYPE_WORD_END); + efl_text_cursor_object_move(sel1, EFL_TEXT_CURSOR_MOVE_TYPE_WORD_START); + efl_text_cursor_object_move(sel2, EFL_TEXT_CURSOR_MOVE_TYPE_WORD_END); break; case EFL_ACCESS_TEXT_GRANULARITY_LINE: - efl_text_cursor_move(sel1, EFL_TEXT_CURSOR_MOVE_TYPE_LINE_START); - efl_text_cursor_move(sel2, EFL_TEXT_CURSOR_MOVE_TYPE_LINE_END); + efl_text_cursor_object_move(sel1, EFL_TEXT_CURSOR_MOVE_TYPE_LINE_START); + efl_text_cursor_object_move(sel2, EFL_TEXT_CURSOR_MOVE_TYPE_LINE_END); break; case EFL_ACCESS_TEXT_GRANULARITY_PARAGRAPH: - efl_text_cursor_move(sel1, EFL_TEXT_CURSOR_MOVE_TYPE_PARAGRAPH_START); - efl_text_cursor_move(sel2, EFL_TEXT_CURSOR_MOVE_TYPE_PARAGRAPH_END); + efl_text_cursor_object_move(sel1, EFL_TEXT_CURSOR_MOVE_TYPE_PARAGRAPH_START); + efl_text_cursor_object_move(sel2, EFL_TEXT_CURSOR_MOVE_TYPE_PARAGRAPH_END); break; case EFL_ACCESS_TEXT_GRANULARITY_SENTENCE: /* this one is not supported by efl */ @@ -1348,9 +1348,9 @@ _text_string_at_offset_get(const Eldbus_Service_Interface *iface, const Eldbus_M return eldbus_message_error_new(msg, "org.freedesktop.DBus.Error.InvalidArgs", "Granularity not suported."); } - str = efl_text_cursor_range_text_get(sel1, sel2); - start = efl_text_cursor_position_get(sel1); - end = efl_text_cursor_position_get(sel2); + str = efl_text_cursor_object_range_text_get(sel1, sel2); + start = efl_text_cursor_object_position_get(sel1); + end = efl_text_cursor_object_position_get(sel2); efl_del(sel1); efl_del(sel2); @@ -1392,11 +1392,11 @@ _text_text_get(const Eldbus_Service_Interface *iface, const Eldbus_Message *msg) if (efl_isa(obj, EFL_TEXT_INTERACTIVE_INTERFACE)) { - Efl_Text_Cursor *sel1 = efl_ui_textbox_cursor_create(obj); - Efl_Text_Cursor *sel2 = efl_ui_textbox_cursor_create(obj); - efl_text_cursor_position_set(sel1, start); - efl_text_cursor_position_set(sel2, end); - str = efl_text_cursor_range_text_get(sel1, sel2); + Efl_Text_Cursor_Object *sel1 = efl_ui_textbox_cursor_create(obj); + Efl_Text_Cursor_Object *sel2 = efl_ui_textbox_cursor_create(obj); + efl_text_cursor_object_position_set(sel1, start); + efl_text_cursor_object_position_set(sel2, end); + str = efl_text_cursor_object_range_text_get(sel1, sel2); efl_del(sel1); efl_del(sel2); } @@ -1438,8 +1438,8 @@ _text_caret_offset_set(const Eldbus_Service_Interface *iface, const Eldbus_Messa if (efl_isa(obj, EFL_TEXT_INTERACTIVE_INTERFACE)) { - Efl_Text_Cursor *cur = efl_text_interactive_main_cursor_get(obj); - efl_text_cursor_position_set(cur, offset); + Efl_Text_Cursor_Object *cur = efl_text_interactive_main_cursor_get(obj); + efl_text_cursor_object_position_set(cur, offset); res = EINA_TRUE; } else if (efl_isa(obj, EFL_ACCESS_TEXT_INTERFACE)) @@ -1476,9 +1476,9 @@ _text_character_at_offset_get(const Eldbus_Service_Interface *iface, const Eldbu if (efl_isa(obj, EFL_TEXT_INTERACTIVE_INTERFACE)) { - Efl_Text_Cursor *cur = efl_ui_textbox_cursor_create(obj); - efl_text_cursor_position_set(cur, offset); - res = efl_text_cursor_content_get(cur); + Efl_Text_Cursor_Object *cur = efl_ui_textbox_cursor_create(obj); + efl_text_cursor_object_position_set(cur, offset); + res = efl_text_cursor_object_content_get(cur); efl_del(cur); } else if (efl_isa(obj, EFL_ACCESS_TEXT_INTERFACE)) @@ -1537,11 +1537,11 @@ _text_attribute_value_get(const Eldbus_Service_Interface *iface, const Eldbus_Me if (efl_isa(obj, EFL_TEXT_INTERACTIVE_INTERFACE)) { - Efl_Text_Cursor *sel1 = efl_ui_textbox_cursor_create(obj); - Efl_Text_Cursor *sel2 = efl_ui_textbox_cursor_create(obj); + Efl_Text_Cursor_Object *sel1 = efl_ui_textbox_cursor_create(obj); + Efl_Text_Cursor_Object *sel2 = efl_ui_textbox_cursor_create(obj); end = start+1; - efl_text_cursor_position_set(sel1, start); - efl_text_cursor_position_set(sel2, end); + efl_text_cursor_object_position_set(sel1, start); + efl_text_cursor_object_position_set(sel2, end); annotations = efl_text_formatter_range_attributes_get(sel1, sel2); if (annotations) @@ -1610,12 +1610,12 @@ _text_attributes_get(const Eldbus_Service_Interface *iface, const Eldbus_Message { Eina_Iterator *annotations; Efl_Text_Attribute_Handle *an; - Efl_Text_Cursor *sel1 = efl_ui_textbox_cursor_create(obj); - Efl_Text_Cursor *sel2 = efl_ui_textbox_cursor_create(obj); + Efl_Text_Cursor_Object *sel1 = efl_ui_textbox_cursor_create(obj); + Efl_Text_Cursor_Object *sel2 = efl_ui_textbox_cursor_create(obj); end = start+1; - efl_text_cursor_position_set(sel1, start); - efl_text_cursor_position_set(sel2, end); + efl_text_cursor_object_position_set(sel1, start); + efl_text_cursor_object_position_set(sel2, end); annotations = efl_text_formatter_range_attributes_get(sel1, sel2); efl_del(sel1); @@ -1681,11 +1681,11 @@ _text_default_attributes_get(const Eldbus_Service_Interface *iface, const Eldbus { Eina_Iterator *annotations; Efl_Text_Attribute_Handle *an; - Efl_Text_Cursor *sel1 = efl_ui_textbox_cursor_create(obj); - Efl_Text_Cursor *sel2 = efl_ui_textbox_cursor_create(obj); + Efl_Text_Cursor_Object *sel1 = efl_ui_textbox_cursor_create(obj); + Efl_Text_Cursor_Object *sel2 = efl_ui_textbox_cursor_create(obj); - efl_text_cursor_move(sel1, EFL_TEXT_CURSOR_MOVE_TYPE_FIRST); - efl_text_cursor_move(sel2, EFL_TEXT_CURSOR_MOVE_TYPE_LAST); + efl_text_cursor_object_move(sel1, EFL_TEXT_CURSOR_MOVE_TYPE_FIRST); + efl_text_cursor_object_move(sel2, EFL_TEXT_CURSOR_MOVE_TYPE_LAST); annotations = efl_text_formatter_range_attributes_get(sel1, sel2); EINA_ITERATOR_FOREACH(annotations, an) @@ -1798,9 +1798,9 @@ _text_character_extents_get(const Eldbus_Service_Interface *iface, const Eldbus_ if (efl_isa(obj, EFL_TEXT_INTERACTIVE_INTERFACE)) { - Efl_Text_Cursor *cur = efl_ui_textbox_cursor_create(obj); - efl_text_cursor_position_set(cur, offset); - rect = efl_text_cursor_geometry_get(cur, EFL_TEXT_CURSOR_TYPE_UNDER); + Efl_Text_Cursor_Object *cur = efl_ui_textbox_cursor_create(obj); + efl_text_cursor_object_position_set(cur, offset); + rect = efl_text_cursor_object_cursor_geometry_get(cur, EFL_TEXT_CURSOR_TYPE_UNDER); efl_del(cur); rect = _text_interactive_get_pos(obj, rect, screen_coords); res = rect.w != 0 ? EINA_TRUE : EINA_FALSE; @@ -1858,9 +1858,9 @@ _text_offset_at_point_get(const Eldbus_Service_Interface *iface, const Eldbus_Me x -= r_obj.x - r_win.x; y -= r_obj.y - r_win.y; } - Efl_Text_Cursor *cur = efl_ui_textbox_cursor_create(obj); - efl_text_cursor_char_coord_set(cur, EINA_POSITION2D(x,y)); - offset = efl_text_cursor_position_get(cur); + Efl_Text_Cursor_Object *cur = efl_ui_textbox_cursor_create(obj); + efl_text_cursor_object_char_coord_set(cur, EINA_POSITION2D(x,y)); + offset = efl_text_cursor_object_position_get(cur); efl_del(cur); } else if (efl_isa(obj, EFL_ACCESS_TEXT_INTERFACE)) @@ -1918,10 +1918,10 @@ _text_selection_get(const Eldbus_Service_Interface *iface, const Eldbus_Message { if (sel_num == 0) { - Efl_Text_Cursor *sel1, *sel2; + Efl_Text_Cursor_Object *sel1, *sel2; efl_text_interactive_selection_cursors_get(obj, &sel1, &sel2); - start = efl_text_cursor_position_get(sel1); - end = efl_text_cursor_position_get(sel2); + start = efl_text_cursor_object_position_get(sel1); + end = efl_text_cursor_object_position_get(sel2); } } else if (efl_isa(obj, EFL_ACCESS_TEXT_INTERFACE)) @@ -1957,10 +1957,10 @@ _text_selection_add(const Eldbus_Service_Interface *iface, const Eldbus_Message if (efl_isa(obj, EFL_TEXT_INTERACTIVE_INTERFACE)) { - Efl_Text_Cursor *sel1, *sel2; + Efl_Text_Cursor_Object *sel1, *sel2; efl_text_interactive_selection_cursors_get(obj, &sel1, &sel2); - efl_text_cursor_position_set(sel1, start); - efl_text_cursor_position_set(sel2, end); + efl_text_cursor_object_position_set(sel1, start); + efl_text_cursor_object_position_set(sel2, end); res = EINA_TRUE; } else if (efl_isa(obj, EFL_ACCESS_TEXT_INTERFACE)) @@ -1998,9 +1998,9 @@ _text_selection_remove(const Eldbus_Service_Interface *iface, const Eldbus_Messa { if (sel_num == 0) { - Efl_Text_Cursor *sel1, *sel2; + Efl_Text_Cursor_Object *sel1, *sel2; efl_text_interactive_selection_cursors_get(obj, &sel1, &sel2); - efl_text_cursor_range_delete(sel1, sel2); + efl_text_cursor_object_range_delete(sel1, sel2); res = EINA_TRUE; } } @@ -2039,10 +2039,10 @@ _text_selection_set(const Eldbus_Service_Interface *iface, const Eldbus_Message { if (sel_num == 0) { - Efl_Text_Cursor *sel1, *sel2; + Efl_Text_Cursor_Object *sel1, *sel2; efl_text_interactive_selection_cursors_get(obj, &sel1, &sel2); - efl_text_cursor_position_set(sel1, start); - efl_text_cursor_position_set(sel2, end); + efl_text_cursor_object_position_set(sel1, start); + efl_text_cursor_object_position_set(sel2, end); res = EINA_TRUE; } } @@ -2084,11 +2084,11 @@ _text_range_extents_get(const Eldbus_Service_Interface *iface, const Eldbus_Mess if (efl_isa(obj, EFL_TEXT_INTERACTIVE_INTERFACE)) { Eina_Rectangle *r; - Efl_Text_Cursor *sel1 = efl_ui_textbox_cursor_create(obj); - Efl_Text_Cursor *sel2 = efl_ui_textbox_cursor_create(obj); - efl_text_cursor_position_set(sel1, start); - efl_text_cursor_position_set(sel2, end); - Eina_Iterator *range = efl_text_cursor_range_precise_geometry_get(sel1, sel2); + Efl_Text_Cursor_Object *sel1 = efl_ui_textbox_cursor_create(obj); + Efl_Text_Cursor_Object *sel2 = efl_ui_textbox_cursor_create(obj); + efl_text_cursor_object_position_set(sel1, start); + efl_text_cursor_object_position_set(sel2, end); + Eina_Iterator *range = efl_text_cursor_object_range_precise_geometry_get(sel1, sel2); /* This rect represent coordinates x1, y1, x2, y2 (not x,y,w,h). * In this way we bypass corner cases @@ -2711,16 +2711,16 @@ _text_properties_get(const Eldbus_Service_Interface *interface, const char *prop { if (checkCharacterCount) { - Efl_Text_Cursor *cur = efl_ui_textbox_cursor_create(obj); - efl_text_cursor_move(cur, EFL_TEXT_CURSOR_MOVE_TYPE_LAST); - result = efl_text_cursor_position_get(cur); + Efl_Text_Cursor_Object *cur = efl_ui_textbox_cursor_create(obj); + efl_text_cursor_object_move(cur, EFL_TEXT_CURSOR_MOVE_TYPE_LAST); + result = efl_text_cursor_object_position_get(cur); efl_del(cur); } if (checkCarretOffset) { - Efl_Text_Cursor *main_cur = efl_text_interactive_main_cursor_get(obj); - result = efl_text_cursor_position_get(main_cur); + Efl_Text_Cursor_Object *main_cur = efl_text_interactive_main_cursor_get(obj); + result = efl_text_cursor_object_position_get(main_cur); } } else if (efl_isa(obj, EFL_ACCESS_TEXT_INTERFACE)) diff --git a/src/lib/evas/Efl_Canvas.h b/src/lib/evas/Efl_Canvas.h index 55534b17dc..e54773040b 100644 --- a/src/lib/evas/Efl_Canvas.h +++ b/src/lib/evas/Efl_Canvas.h @@ -83,7 +83,7 @@ extern "C" { #include */ #include -#include +#include #include #include #include diff --git a/src/lib/evas/Evas_Eo.h b/src/lib/evas/Evas_Eo.h index aefbe144f7..bd62df03ab 100644 --- a/src/lib/evas/Evas_Eo.h +++ b/src/lib/evas/Evas_Eo.h @@ -34,7 +34,7 @@ struct _Efl_Canvas_Object_Animation_Event * * @{ */ -#include "canvas/efl_text_cursor.eo.h" +#include "canvas/efl_text_cursor_object.eo.h" #include "canvas/efl_text_formatter.eo.h" #include "canvas/efl_canvas_textblock.eo.h" #include "canvas/efl_canvas_textblock_factory.eo.h" diff --git a/src/lib/evas/Evas_Internal.h b/src/lib/evas/Evas_Internal.h index 4282488644..7fa7021e50 100644 --- a/src/lib/evas/Evas_Internal.h +++ b/src/lib/evas/Evas_Internal.h @@ -323,8 +323,8 @@ EAPI Eina_Bool evas_textblock_cursor_at_cluster_as_single_glyph(Evas_Textblock_C /*Attribute Factory Internal function*/ EAPI const char * efl_text_formatter_attribute_get(Efl_Text_Attribute_Handle *annotation); -EAPI Eina_Iterator * efl_text_formatter_range_attributes_get(const Efl_Text_Cursor *start, const Efl_Text_Cursor *end); -EAPI void efl_text_formatter_attribute_cursors_get(const Efl_Text_Attribute_Handle *handle, Efl_Text_Cursor *start, Efl_Text_Cursor *end); +EAPI Eina_Iterator * efl_text_formatter_range_attributes_get(const Efl_Text_Cursor_Object *start, const Efl_Text_Cursor_Object *end); +EAPI void efl_text_formatter_attribute_cursors_get(const Efl_Text_Attribute_Handle *handle, Efl_Text_Cursor_Object *start, Efl_Text_Cursor_Object *end); EAPI void efl_text_formatter_remove(Efl_Text_Attribute_Handle *annotation); EAPI Eina_Bool efl_text_formatter_attribute_is_item(Efl_Text_Attribute_Handle *annotation); EAPI Eina_Bool efl_text_formatter_item_geometry_get(const Efl_Text_Attribute_Handle *annotation, int *x, int *y, int *w, int *h); diff --git a/src/lib/evas/canvas/efl_canvas_textblock.eo b/src/lib/evas/canvas/efl_canvas_textblock.eo index ca3d218e34..2be31b7e16 100644 --- a/src/lib/evas/canvas/efl_canvas_textblock.eo +++ b/src/lib/evas/canvas/efl_canvas_textblock.eo @@ -29,7 +29,7 @@ class Efl.Canvas.Textblock extends Efl.Canvas.Object implements Efl.Text, [[Creates a new cursor and adds it to the text object. This cursor can be used to manipulate and iterate the content of the text object. ]] - return: Efl.Text.Cursor @move; [[The created text cursor.]] + return: Efl.Text_Cursor.Object @move; [[The created text cursor.]] } visible_range_get { [[Returns the currently visible range. @@ -40,8 +40,8 @@ class Efl.Canvas.Textblock extends Efl.Canvas.Object implements Efl.Text, ]] return: bool; [[$true on success.]] params { - @in start: Efl.Text.Cursor; [[Range start position.]] - @in end: Efl.Text.Cursor; [[Range end position.]] + @in start: Efl.Text_Cursor.Object; [[Range start position.]] + @in end: Efl.Text_Cursor.Object; [[Range end position.]] } } @property style_insets { @@ -73,7 +73,7 @@ class Efl.Canvas.Textblock extends Efl.Canvas.Object implements Efl.Text, @property newline_as_paragraph_separator { [[When $true, the newline character will behave as a paragraph separator. Paragraph separator equal U+2029, and new line equal U+000A. - This will effect a lot of text behaviour like @Efl.Text.Cursor.move method. + This will effect a lot of text behaviour like @Efl.Text_Cursor.Object.move method. ]] set {} get {} diff --git a/src/lib/evas/canvas/efl_canvas_textblock_internal.h b/src/lib/evas/canvas/efl_canvas_textblock_internal.h index eb137455ea..98bc7f6ac6 100644 --- a/src/lib/evas/canvas/efl_canvas_textblock_internal.h +++ b/src/lib/evas/canvas/efl_canvas_textblock_internal.h @@ -290,7 +290,7 @@ _evas_textblock_relayout_if_needed(Evas_Object *o); * @param canvas_text_obj the canvas text object, where cursor methods will take effect. * @param text_obj the text_object that user can get using cursor text_object property. */ -EAPI void efl_text_cursor_text_object_set(Eo *cursor, Eo *canvas_text_obj, Eo *text_obj); +EAPI void efl_text_cursor_object_text_object_set(Eo *cursor, Eo *canvas_text_obj, Eo *text_obj); /** @@ -298,7 +298,7 @@ EAPI void efl_text_cursor_text_object_set(Eo *cursor, Eo *canvas_text_obj, Eo *t * * @param parent the parent of the cursor object. */ -EAPI Eo* efl_text_cursor_create(Eo *parent); +EAPI Eo* efl_text_cursor_object_create(Eo *parent); /** @@ -307,7 +307,7 @@ EAPI Eo* efl_text_cursor_create(Eo *parent); * @param obj the cursor object. * @param handle the text cursor handle. */ -EAPI void efl_text_cursor_handle_set(Eo *obj, Efl_Text_Cursor_Handle *handle); +EAPI void efl_text_cursor_object_handle_set(Eo *obj, Efl_Text_Cursor_Handle *handle); /** * Internally gets cursor handle(legacy textblock cursor) from cursor object. @@ -315,7 +315,7 @@ EAPI void efl_text_cursor_handle_set(Eo *obj, Efl_Text_Cursor_Handle *handle); * @param obj the cursor object. * @return the internal text cursor handle. */ -EAPI Efl_Text_Cursor_Handle *efl_text_cursor_handle_get(const Eo *obj); +EAPI Efl_Text_Cursor_Handle *efl_text_cursor_object_handle_get(const Eo *obj); #undef EAPI #define EAPI diff --git a/src/lib/evas/canvas/efl_text_cursor.c b/src/lib/evas/canvas/efl_text_cursor.c deleted file mode 100644 index c1e344136d..0000000000 --- a/src/lib/evas/canvas/efl_text_cursor.c +++ /dev/null @@ -1,497 +0,0 @@ -#include "evas_common_private.h" -#include "evas_private.h" -#include "efl_canvas_textblock_internal.h" -#include "eo_internal.h" - -#define MY_CLASS EFL_TEXT_CURSOR_CLASS -#define MY_CLASS_NAME "Efl.Text.Cursor" - -typedef struct -{ - Efl_Text_Cursor_Handle *handle; - Efl_Canvas_Object *text_obj; -} Efl_Text_Cursor_Data; - -struct _Evas_Textblock_Selection_Iterator -{ - Eina_Iterator iterator; /**< Eina Iterator. */ - Eina_List *list; /**< Head of list. */ - Eina_List *current; /**< Current node in loop. */ -}; - -typedef struct _Evas_Textblock_Selection_Iterator Evas_Textblock_Selection_Iterator; - -EFL_CLASS_SIMPLE_CLASS(efl_text_cursor, "Efl.Text.Cursor", EFL_TEXT_CURSOR_CLASS) - -EOLIAN static void -_efl_text_cursor_position_set(Eo *obj EINA_UNUSED, Efl_Text_Cursor_Data *pd, int position) -{ - evas_textblock_cursor_pos_set(pd->handle, position); -} - -EOLIAN static int -_efl_text_cursor_position_get(const Eo *obj EINA_UNUSED, Efl_Text_Cursor_Data *pd) -{ - return evas_textblock_cursor_pos_get(pd->handle); -} - -EOLIAN static Eina_Unicode -_efl_text_cursor_content_get(const Eo *obj EINA_UNUSED, Efl_Text_Cursor_Data *pd) -{ - if (pd->handle && pd->handle->node) - return eina_ustrbuf_string_get(pd->handle->node->unicode)[pd->handle->pos]; - else - return 0; -} - -EOLIAN static Eina_Rect -_efl_text_cursor_content_geometry_get(const Eo *obj EINA_UNUSED, Efl_Text_Cursor_Data *pd) -{ - Eina_Rect rect = {0}; - Eina_Bool item_is = evas_textblock_cursor_format_item_geometry_get(pd->handle, &(rect.x), &(rect.y), &(rect.w), &(rect.h)); - if (item_is) - return rect; - - evas_textblock_cursor_pen_geometry_get(pd->handle, &(rect.x), &(rect.y), &(rect.w), &(rect.h)); - - return rect; -} - -EOLIAN static void -_efl_text_cursor_line_number_set(Eo *obj EINA_UNUSED, Efl_Text_Cursor_Data *pd, int line_number) -{ - evas_textblock_cursor_line_set(pd->handle, line_number); -} - -EOLIAN static int -_efl_text_cursor_line_number_get(const Eo *obj EINA_UNUSED, Efl_Text_Cursor_Data *pd) -{ - Eina_Rect rect = {0}; - - return evas_textblock_cursor_line_geometry_get(pd->handle, &(rect.x), &(rect.y), &(rect.w), &(rect.h)); -} - -EOLIAN static Eina_Rect -_efl_text_cursor_cursor_geometry_get(const Eo *obj EINA_UNUSED, Efl_Text_Cursor_Data *pd, Efl_Text_Cursor_Type ctype) -{ - Eina_Rect rc = {0}; - Evas_Textblock_Cursor_Type cursor_type = (ctype == EFL_TEXT_CURSOR_TYPE_BEFORE) ? EVAS_TEXTBLOCK_CURSOR_BEFORE : EVAS_TEXTBLOCK_CURSOR_UNDER; - evas_textblock_cursor_geometry_bidi_get(pd->handle, &rc.x, &rc.y, &rc.w, &rc.h, NULL, NULL, NULL, NULL, cursor_type); - return rc; -} - -EOLIAN static Eina_Bool -_efl_text_cursor_lower_cursor_geometry_get(const Eo *obj EINA_UNUSED, Efl_Text_Cursor_Data *pd, Eina_Rect *geometry2) -{ - Eina_Rect rc = {0}; - Eina_Bool b_ret = EINA_FALSE; - b_ret = evas_textblock_cursor_geometry_bidi_get(pd->handle, NULL, NULL, NULL, NULL, &rc.x, &rc.y, &rc.w, &rc.h, EVAS_TEXTBLOCK_CURSOR_BEFORE); - if (geometry2) - { - *geometry2 = rc; - } - return b_ret; -} - -EOLIAN static Eina_Bool -_efl_text_cursor_equal(const Eo *obj EINA_UNUSED, Efl_Text_Cursor_Data *pd, const Efl_Text_Cursor *dst) -{ - return evas_textblock_cursor_equal(pd->handle, efl_text_cursor_handle_get(dst)); -} - -EOLIAN static int -_efl_text_cursor_compare(const Eo *obj EINA_UNUSED, Efl_Text_Cursor_Data *pd, const Efl_Text_Cursor *dst) -{ - return evas_textblock_cursor_compare(pd->handle, efl_text_cursor_handle_get(dst)); -} - -static void -_efl_text_cursor_copy(const Efl_Text_Cursor *obj, Efl_Text_Cursor *dst) -{ - Efl_Text_Cursor_Data *pd = efl_data_scope_safe_get(obj, MY_CLASS); - EINA_SAFETY_ON_NULL_RETURN(pd); - - Efl_Text_Cursor_Data *pd_dest = efl_data_scope_safe_get(dst, MY_CLASS); - EINA_SAFETY_ON_NULL_RETURN(pd_dest); - - if (!pd->handle) return; - - Efl_Text_Cursor_Handle *handle = evas_object_textblock_cursor_new(pd->handle->obj); - evas_textblock_cursor_copy(pd->handle, handle); - pd_dest->text_obj = pd->text_obj; - efl_text_cursor_handle_set(dst, handle); - evas_textblock_cursor_unref(handle, NULL); -} - -EOLIAN static Efl_Text_Cursor * -_efl_text_cursor_efl_duplicate_duplicate(const Eo *obj, Efl_Text_Cursor_Data *pd EINA_UNUSED) -{ - Efl_Text_Cursor *dup = efl_text_cursor_create(efl_parent_get(obj)); - - _efl_text_cursor_copy(obj, dup); - - return dup; -} - -EOLIAN static Eina_Bool -_efl_text_cursor_move(Eo *obj EINA_UNUSED, Efl_Text_Cursor_Data *pd, Efl_Text_Cursor_Move_Type type) -{ - Eina_Bool moved = EINA_FALSE; - int pos = evas_textblock_cursor_pos_get(pd->handle); - - switch (type) { - case EFL_TEXT_CURSOR_MOVE_TYPE_CHARACTER_NEXT : - moved = evas_textblock_cursor_char_next(pd->handle); - break; - case EFL_TEXT_CURSOR_MOVE_TYPE_CHARACTER_PREVIOUS : - moved = evas_textblock_cursor_char_prev(pd->handle); - break; - case EFL_TEXT_CURSOR_MOVE_TYPE_CLUSTER_NEXT : - moved = evas_textblock_cursor_cluster_next(pd->handle); - break; - case EFL_TEXT_CURSOR_MOVE_TYPE_CLUSTER_PREVIOUS : - moved = evas_textblock_cursor_cluster_prev(pd->handle); - break; - case EFL_TEXT_CURSOR_MOVE_TYPE_PARAGRAPH_START : - evas_textblock_cursor_paragraph_char_first(pd->handle); - if (pos != evas_textblock_cursor_pos_get(pd->handle)) - moved = EINA_TRUE; - break; - case EFL_TEXT_CURSOR_MOVE_TYPE_PARAGRAPH_END : - evas_textblock_cursor_paragraph_char_last(pd->handle); - if (pos != evas_textblock_cursor_pos_get(pd->handle)) - moved = EINA_TRUE; - break; - case EFL_TEXT_CURSOR_MOVE_TYPE_WORD_START : - moved = evas_textblock_cursor_word_start(pd->handle); - break; - case EFL_TEXT_CURSOR_MOVE_TYPE_WORD_END : - moved = evas_textblock_cursor_word_end(pd->handle); - break; - case EFL_TEXT_CURSOR_MOVE_TYPE_LINE_START : - evas_textblock_cursor_line_char_first(pd->handle); - if (pos != evas_textblock_cursor_pos_get(pd->handle)) - moved = EINA_TRUE; - break; - case EFL_TEXT_CURSOR_MOVE_TYPE_LINE_END : - evas_textblock_cursor_line_char_last(pd->handle); - if (pos != evas_textblock_cursor_pos_get(pd->handle)) - moved = EINA_TRUE; - break; - case EFL_TEXT_CURSOR_MOVE_TYPE_FIRST : - evas_textblock_cursor_paragraph_first(pd->handle); - if (pos != evas_textblock_cursor_pos_get(pd->handle)) - moved = EINA_TRUE; - break; - case EFL_TEXT_CURSOR_MOVE_TYPE_LAST : - evas_textblock_cursor_paragraph_last(pd->handle); - if (pos != evas_textblock_cursor_pos_get(pd->handle)) - moved = EINA_TRUE; - break; - case EFL_TEXT_CURSOR_MOVE_TYPE_PARAGRAPH_NEXT : - moved = evas_textblock_cursor_paragraph_next(pd->handle); - break; - case EFL_TEXT_CURSOR_MOVE_TYPE_PARAGRAPH_PREVIOUS : - moved = evas_textblock_cursor_paragraph_prev(pd->handle); - break; - } - - return moved; -} - -EOLIAN static void -_efl_text_cursor_char_delete(Eo *obj EINA_UNUSED, Efl_Text_Cursor_Data *pd) -{ - evas_textblock_cursor_char_delete(pd->handle); -} - -EOLIAN static Eina_Bool -_efl_text_cursor_line_jump_by(Eo *obj EINA_UNUSED, Efl_Text_Cursor_Data *pd, int by) -{ - if (!pd->handle) return EINA_FALSE; - - Eina_Bool moved = EINA_FALSE; - int pos = evas_textblock_cursor_pos_get(pd->handle); - evas_textblock_cursor_line_jump_by(pd->handle, by); - moved = (pos != evas_textblock_cursor_pos_get(pd->handle)); - return moved; -} - -EOLIAN static void -_efl_text_cursor_char_coord_set(Eo *obj EINA_UNUSED, Efl_Text_Cursor_Data *pd, Eina_Position2D coord) -{ - evas_textblock_cursor_char_coord_set(pd->handle, coord.x, coord.y); -} - -EOLIAN static void -_efl_text_cursor_cluster_coord_set(Eo *obj EINA_UNUSED, Efl_Text_Cursor_Data *pd, Eina_Position2D coord) -{ - evas_textblock_cursor_cluster_coord_set(pd->handle, coord.x, coord.y); -} - -static int -_prepend_text_run2(Efl_Text_Cursor_Handle *cur, const char *s, const char *p) -{ - if ((s) && (p > s)) - { - char *ts; - - ts = alloca(p - s + 1); - strncpy(ts, s, p - s); - ts[p - s] = 0; - return evas_textblock_cursor_text_prepend(cur, ts); - } - return 0; -} - -int -_cursor_text_append(Efl_Text_Cursor_Handle *cur, - const char *text) -{ - if (!text || !cur) return 0; - - const char *off = text; - int len = 0; - - Evas_Object_Protected_Data *obj = efl_data_scope_safe_get(cur->obj, EFL_CANVAS_OBJECT_CLASS); - EINA_SAFETY_ON_NULL_RETURN_VAL(obj, 0); - evas_object_async_block(obj); - - while (*off) - { - char *format = NULL; - int n = 1; - if (!strncmp(_PARAGRAPH_SEPARATOR_UTF8, off, - strlen(_PARAGRAPH_SEPARATOR_UTF8))) - { - format = "ps"; - n = strlen(_PARAGRAPH_SEPARATOR_UTF8); - } - else if (!strncmp(_NEWLINE_UTF8, off, strlen(_NEWLINE_UTF8))) - { - format = "br"; - n = strlen(_NEWLINE_UTF8); - } - else if (!strncmp(_TAB_UTF8, off, strlen(_TAB_UTF8))) - { - format = "tab"; - n = strlen(_TAB_UTF8); - } - - if (format) - { - len += _prepend_text_run2(cur, text, off); - if (evas_textblock_cursor_format_prepend(cur, format)) - { - len++; - } - text = off + n; /* sync text with next segment */ - } - off += n; - } - len += _prepend_text_run2(cur, text, off); - return len; -} - -EOLIAN static void -_efl_text_cursor_text_insert(Eo *obj EINA_UNUSED, Efl_Text_Cursor_Data *pd, const char *text) -{ - _cursor_text_append(pd->handle, text); -} - -EOLIAN static char * -_efl_text_cursor_range_text_get(const Eo *obj EINA_UNUSED, Efl_Text_Cursor_Data *pd, Efl_Text_Cursor *cur2) -{ - return evas_textblock_cursor_range_text_get(pd->handle, efl_text_cursor_handle_get(cur2), EVAS_TEXTBLOCK_TEXT_PLAIN); -} - -EOLIAN static void -_efl_text_cursor_markup_insert(Eo *obj EINA_UNUSED, Efl_Text_Cursor_Data *pd, const char *markup) -{ - evas_object_textblock_text_markup_prepend(pd->handle, markup); -} - -EOLIAN static char * -_efl_text_cursor_range_markup_get(const Eo *obj EINA_UNUSED, Efl_Text_Cursor_Data *pd, Efl_Text_Cursor *cur2) -{ - return evas_textblock_cursor_range_text_get(pd->handle,efl_text_cursor_handle_get(cur2), EVAS_TEXTBLOCK_TEXT_MARKUP); -} - -EOLIAN static Eina_Iterator * -_efl_text_cursor_range_geometry_get(Eo *obj EINA_UNUSED, Efl_Text_Cursor_Data *pd, Efl_Text_Cursor *cur2) -{ - return evas_textblock_cursor_range_simple_geometry_get(pd->handle, efl_text_cursor_handle_get(cur2)); -} - -/** selection iterator */ -/** - * @internal - * Returns the value of the current data of list node, - * and goes to the next list node. - * - * @param it the iterator. - * @param data the data of the current list node. - * @return EINA_FALSE if the current list node does not exists. - * Otherwise, returns EINA_TRUE. - */ -static Eina_Bool -_evas_textblock_selection_iterator_next(Evas_Textblock_Selection_Iterator *it, void **data) -{ - if (!it->current) - return EINA_FALSE; - - *data = eina_list_data_get(it->current); - it->current = eina_list_next(it->current); - - return EINA_TRUE; -} - -/** - * @internal - * Gets the iterator container (Eina_List) which created the iterator. - * @param it the iterator. - * @return A pointer to Eina_List. - */ -static Eina_List * -_evas_textblock_selection_iterator_get_container(Evas_Textblock_Selection_Iterator *it) -{ - return it->list; -} - -/** - * @internal - * Frees the iterator container (Eina_List). - * @param it the iterator. - */ -static void -_evas_textblock_selection_iterator_free(Evas_Textblock_Selection_Iterator *it) -{ - Eina_Rectangle *tr; - - EINA_LIST_FREE(it->list, tr) - free(tr); - EINA_MAGIC_SET(&it->iterator, 0); - free(it); -} - -/** - * @internal - * Creates newly allocated iterator associated to a list. - * @param list The list. - * @return If the memory cannot be allocated, NULL is returned. - * Otherwise, a valid iterator is returned. - */ -static Eina_Iterator * -_evas_textblock_selection_iterator_new(Eina_List *list) -{ - Evas_Textblock_Selection_Iterator *it; - - it = calloc(1, sizeof(Evas_Textblock_Selection_Iterator)); - if (!it) return NULL; - - EINA_MAGIC_SET(&it->iterator, EINA_MAGIC_ITERATOR); - it->list = list; - it->current = list; - - it->iterator.version = EINA_ITERATOR_VERSION; - it->iterator.next = FUNC_ITERATOR_NEXT( - _evas_textblock_selection_iterator_next); - it->iterator.get_container = FUNC_ITERATOR_GET_CONTAINER( - _evas_textblock_selection_iterator_get_container); - it->iterator.free = FUNC_ITERATOR_FREE( - _evas_textblock_selection_iterator_free); - - return &it->iterator; -} - -EOLIAN static Eina_Iterator * -_efl_text_cursor_range_precise_geometry_get(Eo *obj EINA_UNUSED, Efl_Text_Cursor_Data *pd, Efl_Text_Cursor *cur2) -{ - Eina_List *rects = evas_textblock_cursor_range_geometry_get(pd->handle, efl_text_cursor_handle_get(cur2)); - return _evas_textblock_selection_iterator_new(rects); -} - -EOLIAN static void -_efl_text_cursor_range_delete(Eo *obj EINA_UNUSED, Efl_Text_Cursor_Data *pd, Efl_Text_Cursor *cur2) -{ - evas_textblock_cursor_range_delete(pd->handle, efl_text_cursor_handle_get(cur2)); -} - -EAPI void -efl_text_cursor_handle_set(Eo *obj, Efl_Text_Cursor_Handle *handle) -{ - Efl_Text_Cursor_Data *pd = efl_data_scope_safe_get(obj, MY_CLASS); - EINA_SAFETY_ON_NULL_RETURN(pd); - if (handle == pd->handle) - return; - - Efl_Text_Cursor_Handle *old_handle = pd->handle; - - pd->handle = evas_textblock_cursor_ref(handle, obj); - - if (old_handle) - { - evas_textblock_cursor_unref(old_handle, obj); - } -} - -EAPI Efl_Text_Cursor_Handle * -efl_text_cursor_handle_get(const Eo *obj) -{ - Efl_Text_Cursor_Data *pd = efl_data_scope_safe_get(obj, MY_CLASS); - EINA_SAFETY_ON_NULL_RETURN_VAL(pd, NULL); - return pd->handle; -} - -Eo* efl_text_cursor_create(Eo *parent) -{ - return efl_add(efl_text_cursor_realized_class_get(), parent); -} - -void efl_text_cursor_text_object_set(Eo *cursor, Eo *canvas_text_obj, Eo *text_obj) -{ - Efl_Text_Cursor_Data *pd = efl_data_scope_safe_get(cursor, MY_CLASS); - EINA_SAFETY_ON_NULL_RETURN(pd); - Efl_Text_Cursor_Handle *handle = NULL; - if (efl_isa(canvas_text_obj, EFL_CANVAS_TEXTBLOCK_CLASS)) - { - pd->text_obj = text_obj; - handle = evas_object_textblock_cursor_new(canvas_text_obj); - } - else - { - ERR("Expect Canvas Text Object"); - } - - if (handle) - { - efl_text_cursor_handle_set(cursor, handle); - evas_textblock_cursor_unref(handle, NULL); - } -} - -EOLIAN static Efl_Canvas_Object * -_efl_text_cursor_text_object_get(const Eo *obj EINA_UNUSED, Efl_Text_Cursor_Data *pd) -{ - return pd->text_obj; -} - -EOLIAN static void -_efl_text_cursor_efl_object_destructor(Eo *obj, Efl_Text_Cursor_Data *pd) -{ - if (pd->handle) - { - evas_textblock_cursor_unref(pd->handle, obj); - pd->handle = NULL; - } - - if (pd->text_obj) - { - pd->text_obj = NULL; - } - - efl_destructor(efl_super(obj, MY_CLASS)); - -} - -#include "efl_text_cursor.eo.c" diff --git a/src/lib/evas/canvas/efl_text_cursor.eo b/src/lib/evas/canvas/efl_text_cursor.eo deleted file mode 100644 index 4337185001..0000000000 --- a/src/lib/evas/canvas/efl_text_cursor.eo +++ /dev/null @@ -1,240 +0,0 @@ -enum Efl.Text.Cursor_Type -{ - [[Shape of the text cursor. - This is normally used in @Efl.Text.Cursor methods to retrieve the cursor's geometry. - @since 1.24 - ]] - before, [[Cursor is a vertical bar (I-beam) placed before the selected character.]] - under [[Cursor is an horizontal line (underscore) placed under the selected character.]] -} - -enum Efl.Text.Cursor_Move_Type -{ - [[Text cursor movement types. - - @since 1.24 - ]] - character_next, [[Advances to the next character.]] - character_previous, [[Advances to the previous character.]] - cluster_next, [[Advances to the next grapheme cluster - (A character sequence rendered together. See https://unicode.org/reports/tr29/).]] - cluster_previous, [[Advances to the previous grapheme cluster - (A character sequence rendered together. See https://unicode.org/reports/tr29/).]] - paragraph_start, [[Advances to the first character in current paragraph.]] - paragraph_end, [[Advances to the last character in current paragraph.]] - word_start, [[Advance to current word start.]] - word_end, [[Advance to current word end.]] - line_start, [[Advance to current line first character.]] - line_end, [[Advance to current line last character.]] - first, [[Advance to first character in the first paragraph.]] - last, [[Advance to last character in the last paragraph.]] - paragraph_next, [[Advances to the start of the next paragraph.]] - paragraph_previous [[Advances to the end of the previous paragraph.]] -} - -abstract Efl.Text.Cursor extends Efl.Object implements Efl.Duplicate{ - [[Cursor API. - - @since 1.24 - ]] - c_prefix: efl_text_cursor; - methods { - - @property position { - [[Cursor position.]] - set { } - get { } - values { - position: int; [[Cursor position.]] - } - } - - @property content { - [[The content of the cursor (the character under the cursor).]] - get { - } - values { - content: Eina.Unicode; [[The unicode codepoint of the character.]] - } - } - - @property content_geometry { - [[The geometry of the item/char pointed by the cursor.]] - get { } - values { - geometry: Eina.Rect; [[The geometry in pixels.]] - } - } - - @property line_number { - [[The line the cursor is on.]] - set { } - get { } - values { - line_number: int; [[The line number.]] - } - } - - @property cursor_geometry { - [[Returns the geometry of cursor, if cursor is shown for the text - of the same direction as paragraph,else ("split cursor") will return - and you need to consider the lower ("split cursor") @.lower_cursor_geometry - - Split cursor geometry is valid only in @Efl.Text.Cursor_Type.before cursor mode.]] - get { - } - keys { - ctype: Efl.Text.Cursor_Type; [[The type of the cursor.]] - } - values { - geometry: Eina.Rect; [[The geometry of the cursor (or upper cursor) in pixels.]] - } - } - - @property lower_cursor_geometry { - [[Returns the geometry of the lower ("split cursor"), if logical cursor is - between LTR/RTL text. - - To get the upper ("split cursor") @.cursor_geometry with @Efl.Text.Cursor_Type.before cursor mode.]] - get { - return: bool; [[$true if split cursor, $false otherwise.]] - } - values { - geometry: Eina.Rect; [[The geometry of the lower cursor in pixels.]] - } - } - - equal @const { - [[Check if two cursors are equal - faster than compare if all you want is equality.]] - params { - dst: const(Efl.Text.Cursor); [[Destination Cursor.]] - } - return: bool; [[$true if cursors are equal, $false otherwise.]] - } - - compare @const { - [[Compare two cursors - Return <0 if cursor position less than dst, 0 if cursor == dest and >0 otherwise.]] - params { - dst: const(Efl.Text.Cursor); [[Destination Cursor.]] - } - return: int; [[Difference between cursors.]] - } - - move { - [[Move the cursor.]] - params { - @in type: Efl.Text.Cursor_Move_Type; [[The type of movement.]] - } - return: bool; [[True if actually moved.]] - } - - char_delete { - [[Deletes a single character from position pointed by given cursor.]] - } - - line_jump_by { - [[Jump the cursor by the given number of lines.]] - params { - by: int; [[Number of lines.]] - } - return: bool; [[True if actually moved.]] - } - - char_coord_set { - [[Set cursor coordinates.]] - params { - @in coord: Eina.Position2D; [[The coordinates to set to.]] - } - } - - cluster_coord_set { - [[Set cursor coordinates according to grapheme clusters. - It does not allow to put a cursor to the middle of a grapheme cluster.]] - params { - @in coord: Eina.Position2D; [[The coordinates to set to.]] - } - } - - text_insert { - [[Adds text to the current cursor position and set the cursor to - *after* the start of the text just added.]] - params { - @in text: string; [[Text to append (UTF-8 format).]] - } - } - - markup_insert { - [[Inserts a markup text at cursor position.]] - params { - @in markup: string; [[Text to append (UTF-8 format).]] - } - } - - range_markup_get @const { - [[Markup of a given range in the text.]] - return: mstring @move; [[The markup in the given range.]] - params { - cur2: Efl.Text.Cursor; [[End of range.]] - } - } - - range_text_get @const { - [[Returns the text in the range between cursor and $cur2.]] - return: mstring @move; [[The text in the given range.]] - params { - cur2: Efl.Text.Cursor; [[End of range.]] - } - } - - range_geometry_get { - [[Get the simple geometry in pixels of a range in the text. - - The geometry is the geometry in which rectangles in middle lines of - range are merged into one big rectangle. This is an optimized - version of @.range_precise_geometry_get.]] - params { - cur2: Efl.Text.Cursor; [[End of range.]] - } - return: iterator @move; [[ - Iterator on all geometries of the given range.]] - } - - range_precise_geometry_get { - [[Get the "precise" geometry in pixels of a range. - - The geometry is represented as rectangles for each of the line - segments in the given range [$cur1, $cur2].]] - params { - cur2: Efl.Text.Cursor; [[End of range.]] - } - return: iterator @move; [[ - Iterator on all simple geometries of the given range.]] - } - - range_delete { - [[Deletes the range between given cursors. - - This removes all the text in given range [$start,$end].]] - params { - @in cur2: Efl.Text.Cursor; [[Range end position.]] - } - } - - @property text_object { - [[The text object this cursor is associated with.]] - get { } - values { - text_obj: Efl.Canvas.Object; [[The text object.]] - } - } - } - events { - changed: void; [[Called when its position has changed.]] - } - - implements { - Efl.Object.destructor; - Efl.Duplicate.duplicate; - } -} diff --git a/src/lib/evas/canvas/efl_text_cursor_object.c b/src/lib/evas/canvas/efl_text_cursor_object.c new file mode 100644 index 0000000000..e15f12898f --- /dev/null +++ b/src/lib/evas/canvas/efl_text_cursor_object.c @@ -0,0 +1,497 @@ +#include "evas_common_private.h" +#include "evas_private.h" +#include "efl_canvas_textblock_internal.h" +#include "eo_internal.h" + +#define MY_CLASS EFL_TEXT_CURSOR_OBJECT_CLASS +#define MY_CLASS_NAME "Efl.Text.Cursor" + +typedef struct +{ + Efl_Text_Cursor_Handle *handle; + Efl_Canvas_Object *text_obj; +} Efl_Text_Cursor_Object_Data; + +struct _Evas_Textblock_Selection_Iterator +{ + Eina_Iterator iterator; /**< Eina Iterator. */ + Eina_List *list; /**< Head of list. */ + Eina_List *current; /**< Current node in loop. */ +}; + +typedef struct _Evas_Textblock_Selection_Iterator Evas_Textblock_Selection_Iterator; + +EFL_CLASS_SIMPLE_CLASS(efl_text_cursor_object, "Efl.Text.Cursor", EFL_TEXT_CURSOR_OBJECT_CLASS) + +EOLIAN static void +_efl_text_cursor_object_position_set(Eo *obj EINA_UNUSED, Efl_Text_Cursor_Object_Data *pd, int position) +{ + evas_textblock_cursor_pos_set(pd->handle, position); +} + +EOLIAN static int +_efl_text_cursor_object_position_get(const Eo *obj EINA_UNUSED, Efl_Text_Cursor_Object_Data *pd) +{ + return evas_textblock_cursor_pos_get(pd->handle); +} + +EOLIAN static Eina_Unicode +_efl_text_cursor_object_content_get(const Eo *obj EINA_UNUSED, Efl_Text_Cursor_Object_Data *pd) +{ + if (pd->handle && pd->handle->node) + return eina_ustrbuf_string_get(pd->handle->node->unicode)[pd->handle->pos]; + else + return 0; +} + +EOLIAN static Eina_Rect +_efl_text_cursor_object_content_geometry_get(const Eo *obj EINA_UNUSED, Efl_Text_Cursor_Object_Data *pd) +{ + Eina_Rect rect = {0}; + Eina_Bool item_is = evas_textblock_cursor_format_item_geometry_get(pd->handle, &(rect.x), &(rect.y), &(rect.w), &(rect.h)); + if (item_is) + return rect; + + evas_textblock_cursor_pen_geometry_get(pd->handle, &(rect.x), &(rect.y), &(rect.w), &(rect.h)); + + return rect; +} + +EOLIAN static void +_efl_text_cursor_object_line_number_set(Eo *obj EINA_UNUSED, Efl_Text_Cursor_Object_Data *pd, int line_number) +{ + evas_textblock_cursor_line_set(pd->handle, line_number); +} + +EOLIAN static int +_efl_text_cursor_object_line_number_get(const Eo *obj EINA_UNUSED, Efl_Text_Cursor_Object_Data *pd) +{ + Eina_Rect rect = {0}; + + return evas_textblock_cursor_line_geometry_get(pd->handle, &(rect.x), &(rect.y), &(rect.w), &(rect.h)); +} + +EOLIAN static Eina_Rect +_efl_text_cursor_object_cursor_geometry_get(const Eo *obj EINA_UNUSED, Efl_Text_Cursor_Object_Data *pd, Efl_Text_Cursor_Type ctype) +{ + Eina_Rect rc = {0}; + Evas_Textblock_Cursor_Type cursor_type = (ctype == EFL_TEXT_CURSOR_TYPE_BEFORE) ? EVAS_TEXTBLOCK_CURSOR_BEFORE : EVAS_TEXTBLOCK_CURSOR_UNDER; + evas_textblock_cursor_geometry_bidi_get(pd->handle, &rc.x, &rc.y, &rc.w, &rc.h, NULL, NULL, NULL, NULL, cursor_type); + return rc; +} + +EOLIAN static Eina_Bool +_efl_text_cursor_object_lower_cursor_geometry_get(const Eo *obj EINA_UNUSED, Efl_Text_Cursor_Object_Data *pd, Eina_Rect *geometry2) +{ + Eina_Rect rc = {0}; + Eina_Bool b_ret = EINA_FALSE; + b_ret = evas_textblock_cursor_geometry_bidi_get(pd->handle, NULL, NULL, NULL, NULL, &rc.x, &rc.y, &rc.w, &rc.h, EVAS_TEXTBLOCK_CURSOR_BEFORE); + if (geometry2) + { + *geometry2 = rc; + } + return b_ret; +} + +EOLIAN static Eina_Bool +_efl_text_cursor_object_equal(const Eo *obj EINA_UNUSED, Efl_Text_Cursor_Object_Data *pd, const Efl_Text_Cursor_Object *dst) +{ + return evas_textblock_cursor_equal(pd->handle, efl_text_cursor_object_handle_get(dst)); +} + +EOLIAN static int +_efl_text_cursor_object_compare(const Eo *obj EINA_UNUSED, Efl_Text_Cursor_Object_Data *pd, const Efl_Text_Cursor_Object *dst) +{ + return evas_textblock_cursor_compare(pd->handle, efl_text_cursor_object_handle_get(dst)); +} + +static void +_efl_text_cursor_object_copy(const Efl_Text_Cursor_Object *obj, Efl_Text_Cursor_Object *dst) +{ + Efl_Text_Cursor_Object_Data *pd = efl_data_scope_safe_get(obj, MY_CLASS); + EINA_SAFETY_ON_NULL_RETURN(pd); + + Efl_Text_Cursor_Object_Data *pd_dest = efl_data_scope_safe_get(dst, MY_CLASS); + EINA_SAFETY_ON_NULL_RETURN(pd_dest); + + if (!pd->handle) return; + + Efl_Text_Cursor_Handle *handle = evas_object_textblock_cursor_new(pd->handle->obj); + evas_textblock_cursor_copy(pd->handle, handle); + pd_dest->text_obj = pd->text_obj; + efl_text_cursor_object_handle_set(dst, handle); + evas_textblock_cursor_unref(handle, NULL); +} + +EOLIAN static Efl_Text_Cursor_Object * +_efl_text_cursor_object_efl_duplicate_duplicate(const Eo *obj, Efl_Text_Cursor_Object_Data *pd EINA_UNUSED) +{ + Efl_Text_Cursor_Object *dup = efl_text_cursor_object_create(efl_parent_get(obj)); + + _efl_text_cursor_object_copy(obj, dup); + + return dup; +} + +EOLIAN static Eina_Bool +_efl_text_cursor_object_move(Eo *obj EINA_UNUSED, Efl_Text_Cursor_Object_Data *pd, Efl_Text_Cursor_Move_Type type) +{ + Eina_Bool moved = EINA_FALSE; + int pos = evas_textblock_cursor_pos_get(pd->handle); + + switch (type) { + case EFL_TEXT_CURSOR_MOVE_TYPE_CHARACTER_NEXT : + moved = evas_textblock_cursor_char_next(pd->handle); + break; + case EFL_TEXT_CURSOR_MOVE_TYPE_CHARACTER_PREVIOUS : + moved = evas_textblock_cursor_char_prev(pd->handle); + break; + case EFL_TEXT_CURSOR_MOVE_TYPE_CLUSTER_NEXT : + moved = evas_textblock_cursor_cluster_next(pd->handle); + break; + case EFL_TEXT_CURSOR_MOVE_TYPE_CLUSTER_PREVIOUS : + moved = evas_textblock_cursor_cluster_prev(pd->handle); + break; + case EFL_TEXT_CURSOR_MOVE_TYPE_PARAGRAPH_START : + evas_textblock_cursor_paragraph_char_first(pd->handle); + if (pos != evas_textblock_cursor_pos_get(pd->handle)) + moved = EINA_TRUE; + break; + case EFL_TEXT_CURSOR_MOVE_TYPE_PARAGRAPH_END : + evas_textblock_cursor_paragraph_char_last(pd->handle); + if (pos != evas_textblock_cursor_pos_get(pd->handle)) + moved = EINA_TRUE; + break; + case EFL_TEXT_CURSOR_MOVE_TYPE_WORD_START : + moved = evas_textblock_cursor_word_start(pd->handle); + break; + case EFL_TEXT_CURSOR_MOVE_TYPE_WORD_END : + moved = evas_textblock_cursor_word_end(pd->handle); + break; + case EFL_TEXT_CURSOR_MOVE_TYPE_LINE_START : + evas_textblock_cursor_line_char_first(pd->handle); + if (pos != evas_textblock_cursor_pos_get(pd->handle)) + moved = EINA_TRUE; + break; + case EFL_TEXT_CURSOR_MOVE_TYPE_LINE_END : + evas_textblock_cursor_line_char_last(pd->handle); + if (pos != evas_textblock_cursor_pos_get(pd->handle)) + moved = EINA_TRUE; + break; + case EFL_TEXT_CURSOR_MOVE_TYPE_FIRST : + evas_textblock_cursor_paragraph_first(pd->handle); + if (pos != evas_textblock_cursor_pos_get(pd->handle)) + moved = EINA_TRUE; + break; + case EFL_TEXT_CURSOR_MOVE_TYPE_LAST : + evas_textblock_cursor_paragraph_last(pd->handle); + if (pos != evas_textblock_cursor_pos_get(pd->handle)) + moved = EINA_TRUE; + break; + case EFL_TEXT_CURSOR_MOVE_TYPE_PARAGRAPH_NEXT : + moved = evas_textblock_cursor_paragraph_next(pd->handle); + break; + case EFL_TEXT_CURSOR_MOVE_TYPE_PARAGRAPH_PREVIOUS : + moved = evas_textblock_cursor_paragraph_prev(pd->handle); + break; + } + + return moved; +} + +EOLIAN static void +_efl_text_cursor_object_char_delete(Eo *obj EINA_UNUSED, Efl_Text_Cursor_Object_Data *pd) +{ + evas_textblock_cursor_char_delete(pd->handle); +} + +EOLIAN static Eina_Bool +_efl_text_cursor_object_line_jump_by(Eo *obj EINA_UNUSED, Efl_Text_Cursor_Object_Data *pd, int by) +{ + if (!pd->handle) return EINA_FALSE; + + Eina_Bool moved = EINA_FALSE; + int pos = evas_textblock_cursor_pos_get(pd->handle); + evas_textblock_cursor_line_jump_by(pd->handle, by); + moved = (pos != evas_textblock_cursor_pos_get(pd->handle)); + return moved; +} + +EOLIAN static void +_efl_text_cursor_object_char_coord_set(Eo *obj EINA_UNUSED, Efl_Text_Cursor_Object_Data *pd, Eina_Position2D coord) +{ + evas_textblock_cursor_char_coord_set(pd->handle, coord.x, coord.y); +} + +EOLIAN static void +_efl_text_cursor_object_cluster_coord_set(Eo *obj EINA_UNUSED, Efl_Text_Cursor_Object_Data *pd, Eina_Position2D coord) +{ + evas_textblock_cursor_cluster_coord_set(pd->handle, coord.x, coord.y); +} + +static int +_prepend_text_run2(Efl_Text_Cursor_Handle *cur, const char *s, const char *p) +{ + if ((s) && (p > s)) + { + char *ts; + + ts = alloca(p - s + 1); + strncpy(ts, s, p - s); + ts[p - s] = 0; + return evas_textblock_cursor_text_prepend(cur, ts); + } + return 0; +} + +int +_cursor_text_append(Efl_Text_Cursor_Handle *cur, + const char *text) +{ + if (!text || !cur) return 0; + + const char *off = text; + int len = 0; + + Evas_Object_Protected_Data *obj = efl_data_scope_safe_get(cur->obj, EFL_CANVAS_OBJECT_CLASS); + EINA_SAFETY_ON_NULL_RETURN_VAL(obj, 0); + evas_object_async_block(obj); + + while (*off) + { + char *format = NULL; + int n = 1; + if (!strncmp(_PARAGRAPH_SEPARATOR_UTF8, off, + strlen(_PARAGRAPH_SEPARATOR_UTF8))) + { + format = "ps"; + n = strlen(_PARAGRAPH_SEPARATOR_UTF8); + } + else if (!strncmp(_NEWLINE_UTF8, off, strlen(_NEWLINE_UTF8))) + { + format = "br"; + n = strlen(_NEWLINE_UTF8); + } + else if (!strncmp(_TAB_UTF8, off, strlen(_TAB_UTF8))) + { + format = "tab"; + n = strlen(_TAB_UTF8); + } + + if (format) + { + len += _prepend_text_run2(cur, text, off); + if (evas_textblock_cursor_format_prepend(cur, format)) + { + len++; + } + text = off + n; /* sync text with next segment */ + } + off += n; + } + len += _prepend_text_run2(cur, text, off); + return len; +} + +EOLIAN static void +_efl_text_cursor_object_text_insert(Eo *obj EINA_UNUSED, Efl_Text_Cursor_Object_Data *pd, const char *text) +{ + _cursor_text_append(pd->handle, text); +} + +EOLIAN static char * +_efl_text_cursor_object_range_text_get(const Eo *obj EINA_UNUSED, Efl_Text_Cursor_Object_Data *pd, Efl_Text_Cursor_Object *cur2) +{ + return evas_textblock_cursor_range_text_get(pd->handle, efl_text_cursor_object_handle_get(cur2), EVAS_TEXTBLOCK_TEXT_PLAIN); +} + +EOLIAN static void +_efl_text_cursor_object_markup_insert(Eo *obj EINA_UNUSED, Efl_Text_Cursor_Object_Data *pd, const char *markup) +{ + evas_object_textblock_text_markup_prepend(pd->handle, markup); +} + +EOLIAN static char * +_efl_text_cursor_object_range_markup_get(const Eo *obj EINA_UNUSED, Efl_Text_Cursor_Object_Data *pd, Efl_Text_Cursor_Object *cur2) +{ + return evas_textblock_cursor_range_text_get(pd->handle,efl_text_cursor_object_handle_get(cur2), EVAS_TEXTBLOCK_TEXT_MARKUP); +} + +EOLIAN static Eina_Iterator * +_efl_text_cursor_object_range_geometry_get(Eo *obj EINA_UNUSED, Efl_Text_Cursor_Object_Data *pd, Efl_Text_Cursor_Object *cur2) +{ + return evas_textblock_cursor_range_simple_geometry_get(pd->handle, efl_text_cursor_object_handle_get(cur2)); +} + +/** selection iterator */ +/** + * @internal + * Returns the value of the current data of list node, + * and goes to the next list node. + * + * @param it the iterator. + * @param data the data of the current list node. + * @return EINA_FALSE if the current list node does not exists. + * Otherwise, returns EINA_TRUE. + */ +static Eina_Bool +_evas_textblock_selection_iterator_next(Evas_Textblock_Selection_Iterator *it, void **data) +{ + if (!it->current) + return EINA_FALSE; + + *data = eina_list_data_get(it->current); + it->current = eina_list_next(it->current); + + return EINA_TRUE; +} + +/** + * @internal + * Gets the iterator container (Eina_List) which created the iterator. + * @param it the iterator. + * @return A pointer to Eina_List. + */ +static Eina_List * +_evas_textblock_selection_iterator_get_container(Evas_Textblock_Selection_Iterator *it) +{ + return it->list; +} + +/** + * @internal + * Frees the iterator container (Eina_List). + * @param it the iterator. + */ +static void +_evas_textblock_selection_iterator_free(Evas_Textblock_Selection_Iterator *it) +{ + Eina_Rectangle *tr; + + EINA_LIST_FREE(it->list, tr) + free(tr); + EINA_MAGIC_SET(&it->iterator, 0); + free(it); +} + +/** + * @internal + * Creates newly allocated iterator associated to a list. + * @param list The list. + * @return If the memory cannot be allocated, NULL is returned. + * Otherwise, a valid iterator is returned. + */ +static Eina_Iterator * +_evas_textblock_selection_iterator_new(Eina_List *list) +{ + Evas_Textblock_Selection_Iterator *it; + + it = calloc(1, sizeof(Evas_Textblock_Selection_Iterator)); + if (!it) return NULL; + + EINA_MAGIC_SET(&it->iterator, EINA_MAGIC_ITERATOR); + it->list = list; + it->current = list; + + it->iterator.version = EINA_ITERATOR_VERSION; + it->iterator.next = FUNC_ITERATOR_NEXT( + _evas_textblock_selection_iterator_next); + it->iterator.get_container = FUNC_ITERATOR_GET_CONTAINER( + _evas_textblock_selection_iterator_get_container); + it->iterator.free = FUNC_ITERATOR_FREE( + _evas_textblock_selection_iterator_free); + + return &it->iterator; +} + +EOLIAN static Eina_Iterator * +_efl_text_cursor_object_range_precise_geometry_get(Eo *obj EINA_UNUSED, Efl_Text_Cursor_Object_Data *pd, Efl_Text_Cursor_Object *cur2) +{ + Eina_List *rects = evas_textblock_cursor_range_geometry_get(pd->handle, efl_text_cursor_object_handle_get(cur2)); + return _evas_textblock_selection_iterator_new(rects); +} + +EOLIAN static void +_efl_text_cursor_object_range_delete(Eo *obj EINA_UNUSED, Efl_Text_Cursor_Object_Data *pd, Efl_Text_Cursor_Object *cur2) +{ + evas_textblock_cursor_range_delete(pd->handle, efl_text_cursor_object_handle_get(cur2)); +} + +EAPI void +efl_text_cursor_object_handle_set(Eo *obj, Efl_Text_Cursor_Handle *handle) +{ + Efl_Text_Cursor_Object_Data *pd = efl_data_scope_safe_get(obj, MY_CLASS); + EINA_SAFETY_ON_NULL_RETURN(pd); + if (handle == pd->handle) + return; + + Efl_Text_Cursor_Handle *old_handle = pd->handle; + + pd->handle = evas_textblock_cursor_ref(handle, obj); + + if (old_handle) + { + evas_textblock_cursor_unref(old_handle, obj); + } +} + +EAPI Efl_Text_Cursor_Handle * +efl_text_cursor_object_handle_get(const Eo *obj) +{ + Efl_Text_Cursor_Object_Data *pd = efl_data_scope_safe_get(obj, MY_CLASS); + EINA_SAFETY_ON_NULL_RETURN_VAL(pd, NULL); + return pd->handle; +} + +Eo* efl_text_cursor_object_create(Eo *parent) +{ + return efl_add(efl_text_cursor_object_realized_class_get(), parent); +} + +void efl_text_cursor_object_text_object_set(Eo *cursor, Eo *canvas_text_obj, Eo *text_obj) +{ + Efl_Text_Cursor_Object_Data *pd = efl_data_scope_safe_get(cursor, MY_CLASS); + EINA_SAFETY_ON_NULL_RETURN(pd); + Efl_Text_Cursor_Handle *handle = NULL; + if (efl_isa(canvas_text_obj, EFL_CANVAS_TEXTBLOCK_CLASS)) + { + pd->text_obj = text_obj; + handle = evas_object_textblock_cursor_new(canvas_text_obj); + } + else + { + ERR("Expect Canvas Text Object"); + } + + if (handle) + { + efl_text_cursor_object_handle_set(cursor, handle); + evas_textblock_cursor_unref(handle, NULL); + } +} + +EOLIAN static Efl_Canvas_Object * +_efl_text_cursor_object_text_object_get(const Eo *obj EINA_UNUSED, Efl_Text_Cursor_Object_Data *pd) +{ + return pd->text_obj; +} + +EOLIAN static void +_efl_text_cursor_object_efl_object_destructor(Eo *obj, Efl_Text_Cursor_Object_Data *pd) +{ + if (pd->handle) + { + evas_textblock_cursor_unref(pd->handle, obj); + pd->handle = NULL; + } + + if (pd->text_obj) + { + pd->text_obj = NULL; + } + + efl_destructor(efl_super(obj, MY_CLASS)); + +} + +#include "efl_text_cursor_object.eo.c" diff --git a/src/lib/evas/canvas/efl_text_cursor_object.eo b/src/lib/evas/canvas/efl_text_cursor_object.eo new file mode 100644 index 0000000000..9c936047c9 --- /dev/null +++ b/src/lib/evas/canvas/efl_text_cursor_object.eo @@ -0,0 +1,239 @@ +enum Efl.Text_Cursor.Type +{ + [[Shape of the text cursor. + This is normally used in @Efl.Text_Cursor.Object methods to retrieve the cursor's geometry. + @since 1.24 + ]] + before, [[Cursor is a vertical bar (I-beam) placed before the selected character.]] + under [[Cursor is an horizontal line (underscore) placed under the selected character.]] +} + +enum Efl.Text_Cursor.Move_Type +{ + [[Text cursor movement types. + + @since 1.24 + ]] + character_next, [[Advances to the next character.]] + character_previous, [[Advances to the previous character.]] + cluster_next, [[Advances to the next grapheme cluster + (A character sequence rendered together. See https://unicode.org/reports/tr29/).]] + cluster_previous, [[Advances to the previous grapheme cluster + (A character sequence rendered together. See https://unicode.org/reports/tr29/).]] + paragraph_start, [[Advances to the first character in current paragraph.]] + paragraph_end, [[Advances to the last character in current paragraph.]] + word_start, [[Advance to current word start.]] + word_end, [[Advance to current word end.]] + line_start, [[Advance to current line first character.]] + line_end, [[Advance to current line last character.]] + first, [[Advance to first character in the first paragraph.]] + last, [[Advance to last character in the last paragraph.]] + paragraph_next, [[Advances to the start of the next paragraph.]] + paragraph_previous [[Advances to the end of the previous paragraph.]] +} + +abstract Efl.Text_Cursor.Object extends Efl.Object implements Efl.Duplicate{ + [[Cursor API. + + @since 1.24 + ]] + methods { + + @property position { + [[Cursor position.]] + set { } + get { } + values { + position: int; [[Cursor position.]] + } + } + + @property content { + [[The content of the cursor (the character under the cursor).]] + get { + } + values { + content: Eina.Unicode; [[The unicode codepoint of the character.]] + } + } + + @property content_geometry { + [[The geometry of the item/char pointed by the cursor.]] + get { } + values { + geometry: Eina.Rect; [[The geometry in pixels.]] + } + } + + @property line_number { + [[The line the cursor is on.]] + set { } + get { } + values { + line_number: int; [[The line number.]] + } + } + + @property cursor_geometry { + [[Returns the geometry of cursor, if cursor is shown for the text + of the same direction as paragraph,else ("split cursor") will return + and you need to consider the lower ("split cursor") @.lower_cursor_geometry + + Split cursor geometry is valid only in @Efl.Text_Cursor.Type.before cursor mode.]] + get { + } + keys { + ctype: Efl.Text_Cursor.Type; [[The type of the cursor.]] + } + values { + geometry: Eina.Rect; [[The geometry of the cursor (or upper cursor) in pixels.]] + } + } + + @property lower_cursor_geometry { + [[Returns the geometry of the lower ("split cursor"), if logical cursor is + between LTR/RTL text. + + To get the upper ("split cursor") @.cursor_geometry with @Efl.Text_Cursor.Type.before cursor mode.]] + get { + return: bool; [[$true if split cursor, $false otherwise.]] + } + values { + geometry: Eina.Rect; [[The geometry of the lower cursor in pixels.]] + } + } + + equal @const { + [[Check if two cursors are equal - faster than compare if all you want is equality.]] + params { + dst: const(Efl.Text_Cursor.Object); [[Destination Cursor.]] + } + return: bool; [[$true if cursors are equal, $false otherwise.]] + } + + compare @const { + [[Compare two cursors + Return <0 if cursor position less than dst, 0 if cursor == dest and >0 otherwise.]] + params { + dst: const(Efl.Text_Cursor.Object); [[Destination Cursor.]] + } + return: int; [[Difference between cursors.]] + } + + move { + [[Move the cursor.]] + params { + @in type: Efl.Text_Cursor.Move_Type; [[The type of movement.]] + } + return: bool; [[True if actually moved.]] + } + + char_delete { + [[Deletes a single character from position pointed by given cursor.]] + } + + line_jump_by { + [[Jump the cursor by the given number of lines.]] + params { + by: int; [[Number of lines.]] + } + return: bool; [[True if actually moved.]] + } + + char_coord_set { + [[Set cursor coordinates.]] + params { + @in coord: Eina.Position2D; [[The coordinates to set to.]] + } + } + + cluster_coord_set { + [[Set cursor coordinates according to grapheme clusters. + It does not allow to put a cursor to the middle of a grapheme cluster.]] + params { + @in coord: Eina.Position2D; [[The coordinates to set to.]] + } + } + + text_insert { + [[Adds text to the current cursor position and set the cursor to + *after* the start of the text just added.]] + params { + @in text: string; [[Text to append (UTF-8 format).]] + } + } + + markup_insert { + [[Inserts a markup text at cursor position.]] + params { + @in markup: string; [[Text to append (UTF-8 format).]] + } + } + + range_markup_get @const { + [[Markup of a given range in the text.]] + return: mstring @move; [[The markup in the given range.]] + params { + cur2: Efl.Text_Cursor.Object; [[End of range.]] + } + } + + range_text_get @const { + [[Returns the text in the range between cursor and $cur2.]] + return: mstring @move; [[The text in the given range.]] + params { + cur2: Efl.Text_Cursor.Object; [[End of range.]] + } + } + + range_geometry_get { + [[Get the simple geometry in pixels of a range in the text. + + The geometry is the geometry in which rectangles in middle lines of + range are merged into one big rectangle. This is an optimized + version of @.range_precise_geometry_get.]] + params { + cur2: Efl.Text_Cursor.Object; [[End of range.]] + } + return: iterator @move; [[ + Iterator on all geometries of the given range.]] + } + + range_precise_geometry_get { + [[Get the "precise" geometry in pixels of a range. + + The geometry is represented as rectangles for each of the line + segments in the given range [$cur1, $cur2].]] + params { + cur2: Efl.Text_Cursor.Object; [[End of range.]] + } + return: iterator @move; [[ + Iterator on all simple geometries of the given range.]] + } + + range_delete { + [[Deletes the range between given cursors. + + This removes all the text in given range [$start,$end].]] + params { + @in cur2: Efl.Text_Cursor.Object; [[Range end position.]] + } + } + + @property text_object { + [[The text object this cursor is associated with.]] + get { } + values { + text_obj: Efl.Canvas.Object; [[The text object.]] + } + } + } + events { + changed: void; [[Called when its position has changed.]] + } + + implements { + Efl.Object.destructor; + Efl.Duplicate.duplicate; + } +} diff --git a/src/lib/evas/canvas/efl_text_formatter.c b/src/lib/evas/canvas/efl_text_formatter.c index aea3e42356..96eab7ad9f 100644 --- a/src/lib/evas/canvas/efl_text_formatter.c +++ b/src/lib/evas/canvas/efl_text_formatter.c @@ -2,7 +2,7 @@ #include "evas_common_private.h" #include "evas_private.h" #include "efl_canvas_textblock_internal.h" -#include "efl_text_cursor.eo.h" +#include "efl_text_cursor_object.eo.h" #define MY_CLASS EFL_TEXT_FORMATTER_CLASS @@ -12,22 +12,22 @@ typedef struct } Efl_Text_Formatter_Data; EOLIAN static void -_efl_text_formatter_attribute_insert(const Efl_Text_Cursor *start, const Efl_Text_Cursor *end, const char *format) +_efl_text_formatter_attribute_insert(const Efl_Text_Cursor_Object *start, const Efl_Text_Cursor_Object *end, const char *format) { - EINA_SAFETY_ON_TRUE_RETURN(!efl_text_cursor_handle_get(start) || - !efl_text_cursor_handle_get(end) || - efl_text_cursor_handle_get(start)->obj != efl_text_cursor_handle_get(end)->obj); + EINA_SAFETY_ON_TRUE_RETURN(!efl_text_cursor_object_handle_get(start) || + !efl_text_cursor_object_handle_get(end) || + efl_text_cursor_object_handle_get(start)->obj != efl_text_cursor_object_handle_get(end)->obj); - Eo *eo_obj= efl_text_cursor_handle_get(start)->obj; + Eo *eo_obj= efl_text_cursor_object_handle_get(start)->obj; evas_textblock_async_block(eo_obj); - _evas_textblock_annotations_insert(eo_obj, efl_text_cursor_handle_get(start), efl_text_cursor_handle_get(end), format, + _evas_textblock_annotations_insert(eo_obj, efl_text_cursor_object_handle_get(start), efl_text_cursor_object_handle_get(end), format, EINA_FALSE); efl_event_callback_legacy_call(eo_obj, EFL_CANVAS_TEXTBLOCK_EVENT_CHANGED, NULL); } EOLIAN static unsigned int -_efl_text_formatter_attribute_clear(const Efl_Text_Cursor *start, const Efl_Text_Cursor *end) +_efl_text_formatter_attribute_clear(const Efl_Text_Cursor_Object *start, const Efl_Text_Cursor_Object *end) { unsigned int ret = 0; Eina_Iterator *annotations; @@ -55,29 +55,29 @@ efl_text_formatter_attribute_get(Efl_Text_Attribute_Handle *annotation) } Eina_Iterator * -efl_text_formatter_range_attributes_get(const Efl_Text_Cursor *start, const Efl_Text_Cursor *end) +efl_text_formatter_range_attributes_get(const Efl_Text_Cursor_Object *start, const Efl_Text_Cursor_Object *end) { Eina_List *lst = NULL; Efl_Text_Attribute_Handle *it; - EINA_SAFETY_ON_TRUE_RETURN_VAL(!efl_text_cursor_handle_get(start) || - !efl_text_cursor_handle_get(end) || - efl_text_cursor_handle_get(start)->obj != efl_text_cursor_handle_get(end)->obj, NULL); + EINA_SAFETY_ON_TRUE_RETURN_VAL(!efl_text_cursor_object_handle_get(start) || + !efl_text_cursor_object_handle_get(end) || + efl_text_cursor_object_handle_get(start)->obj != efl_text_cursor_object_handle_get(end)->obj, NULL); - Eina_Inlist *annotations = _evas_textblock_annotations_get(efl_text_cursor_handle_get(start)->obj); + Eina_Inlist *annotations = _evas_textblock_annotations_get(efl_text_cursor_object_handle_get(start)->obj); EINA_INLIST_FOREACH(annotations, it) { Efl_Text_Cursor_Handle start2, end2; - _evas_textblock_cursor_init(&start2, efl_text_cursor_handle_get(start)->obj); - _evas_textblock_cursor_init(&end2, efl_text_cursor_handle_get(start)->obj); + _evas_textblock_cursor_init(&start2, efl_text_cursor_object_handle_get(start)->obj); + _evas_textblock_cursor_init(&end2, efl_text_cursor_object_handle_get(start)->obj); if (!it->start_node || !it->end_node) continue; _textblock_cursor_pos_at_fnode_set(&start2, it->start_node); _textblock_cursor_pos_at_fnode_set(&end2, it->end_node); evas_textblock_cursor_char_prev(&end2); - if (!((evas_textblock_cursor_compare(&start2, efl_text_cursor_handle_get(end)) > 0) || - (evas_textblock_cursor_compare(&end2, efl_text_cursor_handle_get(start)) < 0))) + if (!((evas_textblock_cursor_compare(&start2, efl_text_cursor_object_handle_get(end)) > 0) || + (evas_textblock_cursor_compare(&end2, efl_text_cursor_object_handle_get(start)) < 0))) { lst = eina_list_append(lst, it); } @@ -86,14 +86,14 @@ efl_text_formatter_range_attributes_get(const Efl_Text_Cursor *start, const Efl_ } void -efl_text_formatter_attribute_cursors_get(const Efl_Text_Attribute_Handle *handle, Efl_Text_Cursor *start, Efl_Text_Cursor *end) +efl_text_formatter_attribute_cursors_get(const Efl_Text_Attribute_Handle *handle, Efl_Text_Cursor_Object *start, Efl_Text_Cursor_Object *end) { EINA_SAFETY_ON_TRUE_RETURN (!handle || !(handle->obj)); - efl_text_cursor_text_object_set(start, handle->obj, handle->obj); - efl_text_cursor_text_object_set(end, handle->obj, handle->obj); - _textblock_cursor_pos_at_fnode_set(efl_text_cursor_handle_get(start), handle->start_node); - _textblock_cursor_pos_at_fnode_set(efl_text_cursor_handle_get(end), handle->end_node); + efl_text_cursor_object_text_object_set(start, handle->obj, handle->obj); + efl_text_cursor_object_text_object_set(end, handle->obj, handle->obj); + _textblock_cursor_pos_at_fnode_set(efl_text_cursor_object_handle_get(start), handle->start_node); + _textblock_cursor_pos_at_fnode_set(efl_text_cursor_object_handle_get(end), handle->end_node); } void diff --git a/src/lib/evas/canvas/efl_text_formatter.eo b/src/lib/evas/canvas/efl_text_formatter.eo index 139b9ba1a7..0b962fc0b0 100644 --- a/src/lib/evas/canvas/efl_text_formatter.eo +++ b/src/lib/evas/canvas/efl_text_formatter.eo @@ -2,9 +2,9 @@ import efl_text_types; abstract Efl.Text.Formatter extends Efl.Object { [[Text Formatter API to manage text formatting(attributes). - Use it to insert and remove style attributes (font, size, color, ...) using @Efl.Text.Cursor on EFL Widgets. + Use it to insert and remove style attributes (font, size, color, ...) using @Efl.Text_Cursor.Object on EFL Widgets. - Attributes can be assigned to character ranges, selected using two @Efl.Text.Cursor instances. + Attributes can be assigned to character ranges, selected using two @Efl.Text_Cursor.Object instances. Cursor instances are already bound to a text object so there's no need to provide it to this class. Style is specified using format strings as described in @Efl.Canvas.Textblock.style_apply. @@ -20,8 +20,8 @@ abstract Efl.Text.Formatter extends Efl.Object { The passed cursors must belong to same text object, otherwise insertion will be ignored. ]] params { - start: const(Efl.Text.Cursor); [[Start of range.]] - end: const(Efl.Text.Cursor); [[End of range.]] + start: const(Efl.Text_Cursor.Object); [[Start of range.]] + end: const(Efl.Text_Cursor.Object); [[End of range.]] format: string; [[Format string. Uses same format as $style in @Efl.Canvas.Textblock.style_apply.]] } } @@ -30,8 +30,8 @@ abstract Efl.Text.Formatter extends Efl.Object { [[Clear (remove) attributes in the specified range [$start, $end - 1]. ]] params { - start: const(Efl.Text.Cursor); [[Start of range.]] - end: const(Efl.Text.Cursor); [[End of range.]] + start: const(Efl.Text_Cursor.Object); [[Start of range.]] + end: const(Efl.Text_Cursor.Object); [[End of range.]] } return: uint; [[Number of removed attributes.]] } diff --git a/src/lib/evas/canvas/evas_object_textblock.c b/src/lib/evas/canvas/evas_object_textblock.c index 445ce135dd..914a6cf998 100644 --- a/src/lib/evas/canvas/evas_object_textblock.c +++ b/src/lib/evas/canvas/evas_object_textblock.c @@ -66,7 +66,7 @@ #include "evas_common_private.h" #include "evas_private.h" -#include "efl_text_cursor.eo.h" +#include "efl_text_cursor_object.eo.h" #include "Efl.h" #include "efl_canvas_textblock_internal.h" @@ -8296,11 +8296,11 @@ _efl_canvas_textblock_all_styles_get(const Eo *eo_obj EINA_UNUSED, Efl_Canvas_Te return o->default_format.default_style_str; } -EOLIAN static Efl_Text_Cursor * +EOLIAN static Efl_Text_Cursor_Object * _efl_canvas_textblock_cursor_create(Eo *obj, Efl_Canvas_Textblock_Data *pd EINA_UNUSED) { - Eo* cursor = efl_text_cursor_create(obj); - efl_text_cursor_text_object_set(cursor, obj, obj); + Eo* cursor = efl_text_cursor_object_create(obj); + efl_text_cursor_object_text_object_set(cursor, obj, obj); return cursor; } @@ -8654,7 +8654,7 @@ static void _evas_textblock_cursor_object_changed(Efl_Text_Cursor_Handle *cur) Eo *cur_obj; EINA_LIST_FOREACH(cur->cur_objs, l, cur_obj) - efl_event_callback_call(cur_obj, EFL_TEXT_CURSOR_EVENT_CHANGED, NULL); + efl_event_callback_call(cur_obj, EFL_TEXT_CURSOR_OBJECT_EVENT_CHANGED, NULL); } static void @@ -13210,11 +13210,11 @@ evas_textblock_cursor_visible_range_get(Efl_Text_Cursor_Handle *start, Evas_Text EOLIAN static Eina_Bool _efl_canvas_textblock_visible_range_get(Eo *eo_obj EINA_UNUSED, Efl_Canvas_Textblock_Data *pd EINA_UNUSED, - Efl_Text_Cursor *start, Efl_Text_Cursor *end) + Efl_Text_Cursor_Object *start, Efl_Text_Cursor_Object *end) { return evas_textblock_cursor_visible_range_get( - efl_text_cursor_handle_get(start), - efl_text_cursor_handle_get(end) + efl_text_cursor_object_handle_get(start), + efl_text_cursor_object_handle_get(end) ); } diff --git a/src/lib/evas/canvas/meson.build b/src/lib/evas/canvas/meson.build index 291695bf67..7dc662e097 100644 --- a/src/lib/evas/canvas/meson.build +++ b/src/lib/evas/canvas/meson.build @@ -44,7 +44,7 @@ pub_eo_files = [ 'efl_canvas_group.eo', 'efl_gfx_mapping.eo', 'efl_canvas_event_grabber.eo', - 'efl_text_cursor.eo', + 'efl_text_cursor_object.eo', 'efl_canvas_textblock.eo', 'efl_text_formatter.eo', 'efl_canvas_object_animation.eo', @@ -187,7 +187,7 @@ evas_src += files([ 'efl_canvas_vg_image.c', 'evas_filter_mixin.c', 'efl_canvas_object_animation.c', - 'efl_text_cursor.c', + 'efl_text_cursor_object.c', 'efl_text_formatter.c' ]) diff --git a/src/tests/elementary/efl_ui_test_text.c b/src/tests/elementary/efl_ui_test_text.c index dd77472c33..d6c7a87e72 100644 --- a/src/tests/elementary/efl_ui_test_text.c +++ b/src/tests/elementary/efl_ui_test_text.c @@ -31,7 +31,7 @@ EFL_START_TEST(text_cnp) efl_text_interactive_all_select(txt); efl_ui_textbox_selection_copy(txt); efl_text_interactive_all_unselect(txt); - efl_text_cursor_text_insert(efl_text_interactive_main_cursor_get(txt), "X"); + efl_text_cursor_object_text_insert(efl_text_interactive_main_cursor_get(txt), "X"); efl_ui_textbox_selection_paste(txt); ecore_main_loop_iterate(); ck_assert_int_eq(i_copy, 1); @@ -78,13 +78,13 @@ EFL_START_TEST(text_all_select_all_unselect) efl_event_callback_priority_add(txt, EFL_UI_SELECTION_EVENT_WM_SELECTION_CHANGED, EFL_CALLBACK_PRIORITY_BEFORE, _stop_event_soon, NULL); efl_text_set(txt, "Hello"); efl_text_interactive_all_select(txt); - Efl_Text_Cursor *c1=NULL, *c2 =NULL; + Efl_Text_Cursor_Object *c1=NULL, *c2 =NULL; efl_text_interactive_selection_cursors_get(txt, &c1, &c2); ck_assert_ptr_ne(c1, NULL); ck_assert_ptr_ne(c2, NULL); fail_if(!efl_text_interactive_have_selection_get(txt)); - ck_assert_int_eq(efl_text_cursor_position_get(c1), 0); - ck_assert_int_eq(efl_text_cursor_position_get(c2), 5); + ck_assert_int_eq(efl_text_cursor_object_position_get(c1), 0); + ck_assert_int_eq(efl_text_cursor_object_position_get(c2), 5); efl_text_interactive_all_unselect(txt); fail_if(efl_text_interactive_have_selection_get(txt)); ecore_main_loop_iterate(); @@ -95,30 +95,30 @@ EFL_START_TEST(text_all_select_all_unselect) Eo *sel1, *sel2; i_selection = 0; efl_text_interactive_selection_cursors_get(txt, &sel1, &sel2); - efl_text_cursor_position_set(sel1, 1); - efl_text_cursor_position_set(sel2, 2); + efl_text_cursor_object_position_set(sel1, 1); + efl_text_cursor_object_position_set(sel2, 2); ck_assert_int_eq(i_selection, 2); efl_text_interactive_all_select(txt); ck_assert_int_eq(i_selection, 3); - ck_assert_int_eq(efl_text_cursor_position_get(sel1), 0); - ck_assert_int_eq(efl_text_cursor_position_get(sel2), 5); + ck_assert_int_eq(efl_text_cursor_object_position_get(sel1), 0); + ck_assert_int_eq(efl_text_cursor_object_position_get(sel2), 5); Eo *cur1 = efl_ui_textbox_cursor_create(txt); Eo *cur2 = efl_ui_textbox_cursor_create(txt); - efl_text_cursor_position_set(cur1, 1); - efl_text_cursor_position_set(cur2, 2); + efl_text_cursor_object_position_set(cur1, 1); + efl_text_cursor_object_position_set(cur2, 2); efl_text_interactive_selection_cursors_set(txt, cur1, cur2); ck_assert_int_eq(i_selection, 4); efl_text_interactive_selection_cursors_get(txt, &sel1, &sel2); - ck_assert_int_eq(efl_text_cursor_position_get(sel1),1); - ck_assert_int_eq(efl_text_cursor_position_get(sel2),2); + ck_assert_int_eq(efl_text_cursor_object_position_get(sel1),1); + ck_assert_int_eq(efl_text_cursor_object_position_get(sel2),2); /*Select part then select all*/ efl_text_interactive_all_unselect(txt); i_have_selection = 0, i_selection = 0; - efl_text_cursor_position_set(cur1, 1); - efl_text_cursor_position_set(cur2, 2); + efl_text_cursor_object_position_set(cur1, 1); + efl_text_cursor_object_position_set(cur2, 2); efl_text_interactive_selection_cursors_set(txt, cur1, cur2); ck_assert_int_eq(i_selection, 1); ck_assert_int_eq(i_have_selection, 1); @@ -150,13 +150,13 @@ EFL_START_TEST(text_selection) get_me_to_those_events(txt); drag_object(txt, 2, 2, 295, 295, EINA_TRUE); ecore_main_loop_iterate(); - Efl_Text_Cursor *c1=NULL, *c2 =NULL; + Efl_Text_Cursor_Object *c1=NULL, *c2 =NULL; efl_text_interactive_selection_cursors_get(txt, &c1, &c2); ck_assert_ptr_ne(c1, NULL); ck_assert_ptr_ne(c2, NULL); fail_if(!efl_text_interactive_have_selection_get(txt)); - ck_assert_int_eq(efl_text_cursor_position_get(c1), 0); - ck_assert_int_eq(efl_text_cursor_position_get(c2), 5); + ck_assert_int_eq(efl_text_cursor_object_position_get(c1), 0); + ck_assert_int_eq(efl_text_cursor_object_position_get(c2), 5); efl_text_interactive_all_unselect(txt); fail_if(efl_text_interactive_have_selection_get(txt)); efl_text_interactive_selection_allowed_set(txt, EINA_FALSE); @@ -206,10 +206,10 @@ EFL_START_TEST(text_scroll_mode) /*scroll mode is false by default*/ fail_if(efl_ui_textbox_scrollable_get(txt)); efl_ui_textbox_scrollable_set(txt, !efl_ui_textbox_scrollable_get(txt)); - efl_text_cursor_text_insert(cur, "World"); + efl_text_cursor_object_text_insert(cur, "World"); fail_if(!efl_ui_textbox_scrollable_get(txt)); efl_ui_textbox_scrollable_set(txt, !efl_ui_textbox_scrollable_get(txt)); - efl_text_cursor_text_insert(cur, "!!!"); + efl_text_cursor_object_text_insert(cur, "!!!"); ck_assert_str_eq(efl_text_get(txt),"HelloWorld!!!"); efl_del(txt); @@ -256,22 +256,22 @@ EFL_START_TEST(text_keys_handler) Evas *e = evas_object_evas_get(txt); efl_ui_focus_util_focus(txt); - efl_text_cursor_move(efl_text_interactive_main_cursor_get(txt), EFL_TEXT_CURSOR_MOVE_TYPE_LAST); + efl_text_cursor_object_move(efl_text_interactive_main_cursor_get(txt), EFL_TEXT_CURSOR_MOVE_TYPE_LAST); evas_key_modifier_on(e, "Control"); evas_event_feed_key_down(e, "BackSpace", "BackSpace", "\b", "\b", time(NULL), NULL); ecore_main_loop_iterate(); ck_assert_str_eq(efl_text_get(txt),""); - ck_assert_int_eq(efl_text_cursor_position_get(efl_text_interactive_main_cursor_get(txt)), 0); + ck_assert_int_eq(efl_text_cursor_object_position_get(efl_text_interactive_main_cursor_get(txt)), 0); evas_event_feed_key_up(e, "BackSpace", "BackSpace", "\b", "\b", time(NULL), NULL); ecore_main_loop_iterate(); efl_text_set(txt, "Hello"); - efl_text_cursor_position_set(efl_text_interactive_main_cursor_get(txt), 0); + efl_text_cursor_object_position_set(efl_text_interactive_main_cursor_get(txt), 0); evas_key_modifier_on(e, "Control"); evas_event_feed_key_down(e, "Delete", "Delete", "\177", "\177", time(NULL), NULL); ecore_main_loop_iterate(); ck_assert_str_eq(efl_text_get(txt),""); - ck_assert_int_eq(efl_text_cursor_position_get(efl_text_interactive_main_cursor_get(txt)), 0); + ck_assert_int_eq(efl_text_cursor_object_position_get(efl_text_interactive_main_cursor_get(txt)), 0); evas_event_feed_key_up(e, "Delete", "Delete", "\177", "\177", time(NULL), NULL); ecore_main_loop_iterate(); diff --git a/src/tests/evas/evas_test_textblock.c b/src/tests/evas/evas_test_textblock.c index 79d69a6104..ef1596207f 100644 --- a/src/tests/evas/evas_test_textblock.c +++ b/src/tests/evas/evas_test_textblock.c @@ -38,7 +38,7 @@ static const char *style_buf = Evas_Object *tb; \ Evas_Textblock_Style *st; \ Evas_Textblock_Cursor *cur; \ - Efl_Text_Cursor *cur_obj; \ + Efl_Text_Cursor_Object *cur_obj; \ evas = EVAS_TEST_INIT_EVAS(); \ evas_font_hinting_set(evas, EVAS_FONT_HINTING_AUTO); \ tb = evas_object_textblock_add(evas); \ @@ -4351,7 +4351,7 @@ EFL_END_TEST; EFL_START_TEST(evas_textblock_annotation) { START_TB_TEST(); - Efl_Text_Cursor *start, *end; + Efl_Text_Cursor_Object *start, *end; start = efl_canvas_textblock_cursor_create(tb); end = efl_canvas_textblock_cursor_create(tb); @@ -4367,18 +4367,18 @@ EFL_START_TEST(evas_textblock_annotation) /* Check some trivial cases */ - efl_text_cursor_position_set(start, 0); - efl_text_cursor_position_set(end, 3); + efl_text_cursor_object_position_set(start, 0); + efl_text_cursor_object_position_set(end, 3); efl_text_formatter_attribute_insert(start, end, "font_size=80"); - efl_text_cursor_position_set(start, 1); - efl_text_cursor_position_set(end, 2); + efl_text_cursor_object_position_set(start, 1); + efl_text_cursor_object_position_set(end, 2); efl_text_formatter_attribute_insert(start, end, "font=arial"); - efl_text_cursor_position_set(start, 2); - efl_text_cursor_position_set(end, 3); + efl_text_cursor_object_position_set(start, 2); + efl_text_cursor_object_position_set(end, 3); efl_text_formatter_attribute_insert(start, end, "color=#fff"); - efl_text_cursor_position_set(start, 0); - efl_text_cursor_position_set(end, 3); + efl_text_cursor_object_position_set(start, 0); + efl_text_cursor_object_position_set(end, 3); unsigned int count = efl_text_formatter_attribute_clear(start, end); fail_if(count != 3); } @@ -4391,7 +4391,7 @@ static const char *efl_style_buf = Evas *evas; \ Eo *txt; \ Efl_Text_Cursor_Handle *cur; \ - Efl_Text_Cursor *cur_obj; \ + Efl_Text_Cursor_Object *cur_obj; \ evas = EVAS_TEST_INIT_EVAS(); \ evas_font_hinting_set(evas, EVAS_FONT_HINTING_AUTO); \ txt = efl_add(EFL_CANVAS_TEXTBLOCK_CLASS, evas); \ @@ -4497,30 +4497,30 @@ EFL_START_TEST(efl_canvas_textblock_cursor) efl_text_set(txt, buf); ck_assert_int_eq(strcmp(efl_text_get(txt), buf), 0); - pos = efl_text_cursor_position_get(cur_obj); + pos = efl_text_cursor_object_position_get(cur_obj); ck_assert_int_eq(pos, 0); - ck_assert(!efl_text_cursor_line_jump_by(cur_obj, -1)); - pos = efl_text_cursor_position_get(cur_obj); + ck_assert(!efl_text_cursor_object_line_jump_by(cur_obj, -1)); + pos = efl_text_cursor_object_position_get(cur_obj); ck_assert_int_eq(pos, 0); - ck_assert(efl_text_cursor_line_jump_by(cur_obj, 1)); - pos = efl_text_cursor_position_get(cur_obj); + ck_assert(efl_text_cursor_object_line_jump_by(cur_obj, 1)); + pos = efl_text_cursor_object_position_get(cur_obj); ck_assert_int_eq(pos, 10); efl_text_markup_set(txt, "Hello WorldThis is EFL
Enlightenment"); - efl_text_cursor_position_set(cur_obj, 0); - ck_assert_int_eq(efl_text_cursor_line_number_get(cur_obj), 0); - ck_assert(efl_text_cursor_line_jump_by(cur_obj, 2)); - ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 24); - ck_assert_int_eq(efl_text_cursor_line_number_get(cur_obj), 2); - ck_assert(efl_text_cursor_line_jump_by(cur_obj, -2)); - ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 0); - ck_assert_int_eq(efl_text_cursor_line_number_get(cur_obj), 0); - - ck_assert(efl_text_cursor_line_jump_by(cur_obj, 2)); - efl_text_cursor_line_number_set(cur_obj, 2); - ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 24); - efl_text_cursor_line_number_set(cur_obj, 0); - ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 0); + efl_text_cursor_object_position_set(cur_obj, 0); + ck_assert_int_eq(efl_text_cursor_object_line_number_get(cur_obj), 0); + ck_assert(efl_text_cursor_object_line_jump_by(cur_obj, 2)); + ck_assert_int_eq(efl_text_cursor_object_position_get(cur_obj), 24); + ck_assert_int_eq(efl_text_cursor_object_line_number_get(cur_obj), 2); + ck_assert(efl_text_cursor_object_line_jump_by(cur_obj, -2)); + ck_assert_int_eq(efl_text_cursor_object_position_get(cur_obj), 0); + ck_assert_int_eq(efl_text_cursor_object_line_number_get(cur_obj), 0); + + ck_assert(efl_text_cursor_object_line_jump_by(cur_obj, 2)); + efl_text_cursor_object_line_number_set(cur_obj, 2); + ck_assert_int_eq(efl_text_cursor_object_position_get(cur_obj), 24); + efl_text_cursor_object_line_number_set(cur_obj, 0); + ck_assert_int_eq(efl_text_cursor_object_position_get(cur_obj), 0); Eo * cursor_temp = efl_duplicate(cur_obj); ck_assert_ptr_ne(cursor_temp, NULL); @@ -4528,172 +4528,172 @@ EFL_START_TEST(efl_canvas_textblock_cursor) cursor_temp = NULL; Eo * cursor1 = efl_canvas_textblock_cursor_create(txt); - efl_text_cursor_position_set(cursor1, 1); - pos = efl_text_cursor_position_get(cursor1); + efl_text_cursor_object_position_set(cursor1, 1); + pos = efl_text_cursor_object_position_get(cursor1); ck_assert_int_eq(pos, 1); efl_text_set(txt, ""); efl_text_set(txt, ""); - efl_text_cursor_text_insert(cursor1, "aa"); + efl_text_cursor_object_text_insert(cursor1, "aa"); ck_assert_int_eq(changed_emit, 4); efl_text_markup_set(txt, "Hello
Word"); efl_text_markup_set(txt, "Hello
Word"); - efl_text_cursor_markup_insert(cursor1, "aa"); + efl_text_cursor_object_markup_insert(cursor1, "aa"); ck_assert_int_eq(changed_emit, 6); efl_text_set(txt, ""); - ck_assert(!efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_CHARACTER_NEXT)); - ck_assert(!efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_CHARACTER_PREVIOUS)); - ck_assert(!efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_CLUSTER_NEXT)); - ck_assert(!efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_CLUSTER_PREVIOUS)); - ck_assert(!efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_PARAGRAPH_START)); - ck_assert(!efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_PARAGRAPH_END)); - ck_assert(!efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_LINE_START)); - ck_assert(!efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_LINE_END)); - ck_assert(!efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_WORD_START)); - ck_assert(!efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_WORD_END)); - ck_assert(!efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_PARAGRAPH_NEXT)); - ck_assert(!efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_PARAGRAPH_PREVIOUS)); - ck_assert(!efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_FIRST)); - ck_assert(!efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_LAST)); - ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 0); + ck_assert(!efl_text_cursor_object_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_CHARACTER_NEXT)); + ck_assert(!efl_text_cursor_object_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_CHARACTER_PREVIOUS)); + ck_assert(!efl_text_cursor_object_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_CLUSTER_NEXT)); + ck_assert(!efl_text_cursor_object_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_CLUSTER_PREVIOUS)); + ck_assert(!efl_text_cursor_object_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_PARAGRAPH_START)); + ck_assert(!efl_text_cursor_object_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_PARAGRAPH_END)); + ck_assert(!efl_text_cursor_object_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_LINE_START)); + ck_assert(!efl_text_cursor_object_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_LINE_END)); + ck_assert(!efl_text_cursor_object_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_WORD_START)); + ck_assert(!efl_text_cursor_object_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_WORD_END)); + ck_assert(!efl_text_cursor_object_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_PARAGRAPH_NEXT)); + ck_assert(!efl_text_cursor_object_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_PARAGRAPH_PREVIOUS)); + ck_assert(!efl_text_cursor_object_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_FIRST)); + ck_assert(!efl_text_cursor_object_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_LAST)); + ck_assert_int_eq(efl_text_cursor_object_position_get(cur_obj), 0); ck_assert_int_eq(changed_emit, 7); efl_text_markup_set(txt, "Hello WorldThis is EFL
Enlightenment"); - ck_assert(efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_CHARACTER_NEXT)); - ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 1); - ck_assert(efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_CHARACTER_PREVIOUS)); - ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 0); - ck_assert(efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_CLUSTER_NEXT)); - ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 1); - ck_assert(efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_CLUSTER_PREVIOUS)); - ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 0); - - efl_text_cursor_position_set(cur_obj, 0); - ck_assert(efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_WORD_END)); - ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 4); - ck_assert(!efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_WORD_END)); - ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 4); - ck_assert(efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_WORD_START)); - ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 0); - ck_assert(!efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_WORD_START)); - ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 0); - - ck_assert(efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_WORD_END)); - ck_assert(efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_CHARACTER_NEXT)); - ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 5); - ck_assert(efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_WORD_END)); - ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 10); - ck_assert(efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_CHARACTER_NEXT)); - ck_assert(efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_WORD_END)); - ck_assert_int_ne(efl_text_cursor_position_get(cur_obj), 10); - - ck_assert(efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_LINE_END)); - ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 23); - ck_assert(!efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_LINE_END)); - ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 23); - ck_assert(efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_LINE_START)); - ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 12); - ck_assert(!efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_LINE_START)); - ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 12); - ck_assert(efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_CHARACTER_PREVIOUS)); - ck_assert(efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_LINE_START)); - ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 0); + ck_assert(efl_text_cursor_object_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_CHARACTER_NEXT)); + ck_assert_int_eq(efl_text_cursor_object_position_get(cur_obj), 1); + ck_assert(efl_text_cursor_object_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_CHARACTER_PREVIOUS)); + ck_assert_int_eq(efl_text_cursor_object_position_get(cur_obj), 0); + ck_assert(efl_text_cursor_object_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_CLUSTER_NEXT)); + ck_assert_int_eq(efl_text_cursor_object_position_get(cur_obj), 1); + ck_assert(efl_text_cursor_object_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_CLUSTER_PREVIOUS)); + ck_assert_int_eq(efl_text_cursor_object_position_get(cur_obj), 0); + + efl_text_cursor_object_position_set(cur_obj, 0); + ck_assert(efl_text_cursor_object_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_WORD_END)); + ck_assert_int_eq(efl_text_cursor_object_position_get(cur_obj), 4); + ck_assert(!efl_text_cursor_object_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_WORD_END)); + ck_assert_int_eq(efl_text_cursor_object_position_get(cur_obj), 4); + ck_assert(efl_text_cursor_object_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_WORD_START)); + ck_assert_int_eq(efl_text_cursor_object_position_get(cur_obj), 0); + ck_assert(!efl_text_cursor_object_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_WORD_START)); + ck_assert_int_eq(efl_text_cursor_object_position_get(cur_obj), 0); + + ck_assert(efl_text_cursor_object_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_WORD_END)); + ck_assert(efl_text_cursor_object_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_CHARACTER_NEXT)); + ck_assert_int_eq(efl_text_cursor_object_position_get(cur_obj), 5); + ck_assert(efl_text_cursor_object_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_WORD_END)); + ck_assert_int_eq(efl_text_cursor_object_position_get(cur_obj), 10); + ck_assert(efl_text_cursor_object_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_CHARACTER_NEXT)); + ck_assert(efl_text_cursor_object_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_WORD_END)); + ck_assert_int_ne(efl_text_cursor_object_position_get(cur_obj), 10); + + ck_assert(efl_text_cursor_object_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_LINE_END)); + ck_assert_int_eq(efl_text_cursor_object_position_get(cur_obj), 23); + ck_assert(!efl_text_cursor_object_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_LINE_END)); + ck_assert_int_eq(efl_text_cursor_object_position_get(cur_obj), 23); + ck_assert(efl_text_cursor_object_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_LINE_START)); + ck_assert_int_eq(efl_text_cursor_object_position_get(cur_obj), 12); + ck_assert(!efl_text_cursor_object_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_LINE_START)); + ck_assert_int_eq(efl_text_cursor_object_position_get(cur_obj), 12); + ck_assert(efl_text_cursor_object_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_CHARACTER_PREVIOUS)); + ck_assert(efl_text_cursor_object_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_LINE_START)); + ck_assert_int_eq(efl_text_cursor_object_position_get(cur_obj), 0); #if defined(HAVE_FRIBIDI) && defined(HAVE_HARFBUZZ) efl_text_markup_set(txt, "الْبَرْمَجةُمَرْحبَاً"); - efl_text_cursor_cluster_coord_set(cur_obj, EINA_POSITION2D(0, 0)); - ck_assert(efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_CLUSTER_NEXT)); - ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 1); - ck_assert(efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_CLUSTER_NEXT)); - ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 3); - ck_assert(efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_CLUSTER_NEXT)); - ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 5); - ck_assert(efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_CHARACTER_PREVIOUS)); - ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 4); - ck_assert(efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_CHARACTER_NEXT)); - ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 5); - ck_assert(efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_CHARACTER_NEXT)); - ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 6); - ck_assert(efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_CLUSTER_NEXT)); - ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 7); - - ck_assert(efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_PARAGRAPH_NEXT)); - ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 13); - ck_assert(!efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_PARAGRAPH_NEXT)); - ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 13); - ck_assert(efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_PARAGRAPH_END)); - ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 22); - ck_assert(!efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_PARAGRAPH_END)); - ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 22); - ck_assert(!efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_LAST)); - ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 22); - ck_assert(efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_PARAGRAPH_START)); - ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 13); - ck_assert(efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_PARAGRAPH_END)); - ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 22); - ck_assert(efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_FIRST)); - ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 0); + efl_text_cursor_object_cluster_coord_set(cur_obj, EINA_POSITION2D(0, 0)); + ck_assert(efl_text_cursor_object_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_CLUSTER_NEXT)); + ck_assert_int_eq(efl_text_cursor_object_position_get(cur_obj), 1); + ck_assert(efl_text_cursor_object_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_CLUSTER_NEXT)); + ck_assert_int_eq(efl_text_cursor_object_position_get(cur_obj), 3); + ck_assert(efl_text_cursor_object_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_CLUSTER_NEXT)); + ck_assert_int_eq(efl_text_cursor_object_position_get(cur_obj), 5); + ck_assert(efl_text_cursor_object_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_CHARACTER_PREVIOUS)); + ck_assert_int_eq(efl_text_cursor_object_position_get(cur_obj), 4); + ck_assert(efl_text_cursor_object_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_CHARACTER_NEXT)); + ck_assert_int_eq(efl_text_cursor_object_position_get(cur_obj), 5); + ck_assert(efl_text_cursor_object_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_CHARACTER_NEXT)); + ck_assert_int_eq(efl_text_cursor_object_position_get(cur_obj), 6); + ck_assert(efl_text_cursor_object_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_CLUSTER_NEXT)); + ck_assert_int_eq(efl_text_cursor_object_position_get(cur_obj), 7); + + ck_assert(efl_text_cursor_object_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_PARAGRAPH_NEXT)); + ck_assert_int_eq(efl_text_cursor_object_position_get(cur_obj), 13); + ck_assert(!efl_text_cursor_object_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_PARAGRAPH_NEXT)); + ck_assert_int_eq(efl_text_cursor_object_position_get(cur_obj), 13); + ck_assert(efl_text_cursor_object_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_PARAGRAPH_END)); + ck_assert_int_eq(efl_text_cursor_object_position_get(cur_obj), 22); + ck_assert(!efl_text_cursor_object_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_PARAGRAPH_END)); + ck_assert_int_eq(efl_text_cursor_object_position_get(cur_obj), 22); + ck_assert(!efl_text_cursor_object_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_LAST)); + ck_assert_int_eq(efl_text_cursor_object_position_get(cur_obj), 22); + ck_assert(efl_text_cursor_object_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_PARAGRAPH_START)); + ck_assert_int_eq(efl_text_cursor_object_position_get(cur_obj), 13); + ck_assert(efl_text_cursor_object_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_PARAGRAPH_END)); + ck_assert_int_eq(efl_text_cursor_object_position_get(cur_obj), 22); + ck_assert(efl_text_cursor_object_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_FIRST)); + ck_assert_int_eq(efl_text_cursor_object_position_get(cur_obj), 0); #endif Eo *nCur = efl_canvas_textblock_cursor_create(txt); Eo *nCur2 = efl_canvas_textblock_cursor_create(txt); Eo *nCur3 = efl_canvas_textblock_cursor_create(txt); efl_text_markup_set(txt, "Hello WorldThis is EFL
Enlightenment"); - efl_text_cursor_position_set(cur_obj, 0); + efl_text_cursor_object_position_set(cur_obj, 0); ck_assert_ptr_ne(nCur, NULL); ck_assert_ptr_ne(nCur2, NULL); ck_assert_ptr_ne(nCur3, NULL); - ck_assert(efl_text_cursor_equal(cur_obj, nCur)); - ck_assert(efl_text_cursor_equal(cur_obj, nCur2)); - ck_assert(efl_text_cursor_equal(cur_obj, nCur3)); - ck_assert(efl_text_cursor_equal(nCur2, nCur3)); + ck_assert(efl_text_cursor_object_equal(cur_obj, nCur)); + ck_assert(efl_text_cursor_object_equal(cur_obj, nCur2)); + ck_assert(efl_text_cursor_object_equal(cur_obj, nCur3)); + ck_assert(efl_text_cursor_object_equal(nCur2, nCur3)); - ck_assert_int_eq(efl_text_cursor_compare(cur_obj, nCur3), 0); - ck_assert_int_eq(efl_text_cursor_compare(nCur2, nCur3), 0); - ck_assert_int_eq(efl_text_cursor_compare(cur_obj, nCur), 0); + ck_assert_int_eq(efl_text_cursor_object_compare(cur_obj, nCur3), 0); + ck_assert_int_eq(efl_text_cursor_object_compare(nCur2, nCur3), 0); + ck_assert_int_eq(efl_text_cursor_object_compare(cur_obj, nCur), 0); - ck_assert(efl_text_cursor_move(nCur, EFL_TEXT_CURSOR_MOVE_TYPE_PARAGRAPH_NEXT)); - ck_assert_int_lt(efl_text_cursor_compare(cur_obj, nCur), 0); - ck_assert_int_gt(efl_text_cursor_compare(nCur, cur_obj), 0); - efl_text_cursor_position_set(nCur2, efl_text_cursor_position_get(nCur)); - ck_assert_int_lt(efl_text_cursor_compare(cur_obj, nCur2), 0); - ck_assert_int_gt(efl_text_cursor_compare(nCur2, cur_obj), 0); - ck_assert(!efl_text_cursor_equal(nCur2, nCur3)); + ck_assert(efl_text_cursor_object_move(nCur, EFL_TEXT_CURSOR_MOVE_TYPE_PARAGRAPH_NEXT)); + ck_assert_int_lt(efl_text_cursor_object_compare(cur_obj, nCur), 0); + ck_assert_int_gt(efl_text_cursor_object_compare(nCur, cur_obj), 0); + efl_text_cursor_object_position_set(nCur2, efl_text_cursor_object_position_get(nCur)); + ck_assert_int_lt(efl_text_cursor_object_compare(cur_obj, nCur2), 0); + ck_assert_int_gt(efl_text_cursor_object_compare(nCur2, cur_obj), 0); + ck_assert(!efl_text_cursor_object_equal(nCur2, nCur3)); efl_text_set(txt, ""); - efl_text_cursor_text_insert(cur_obj, "Hello World"); - ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 11); - efl_text_cursor_text_insert(cur_obj, "Hello World"); - ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 22); + efl_text_cursor_object_text_insert(cur_obj, "Hello World"); + ck_assert_int_eq(efl_text_cursor_object_position_get(cur_obj), 11); + efl_text_cursor_object_text_insert(cur_obj, "Hello World"); + ck_assert_int_eq(efl_text_cursor_object_position_get(cur_obj), 22); ck_assert_str_eq(efl_text_get(txt), "Hello WorldHello World"); efl_text_set(txt, ""); - efl_text_cursor_markup_insert(cur_obj, "Hello WorldHello World"); - ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 23); - - efl_text_cursor_char_coord_set(cur_obj, EINA_POSITION2D(0, 0)); - ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 0); - efl_text_cursor_char_coord_set(cur_obj, EINA_POSITION2D(500, 500)); - ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 23); - efl_text_cursor_cluster_coord_set(cur_obj, EINA_POSITION2D(0, 0)); - ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 0); - efl_text_cursor_cluster_coord_set(cur_obj, EINA_POSITION2D(500, 500)); - ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 23); - - efl_text_cursor_position_set(nCur, 0); - efl_text_cursor_position_set(cur_obj, 5); - - ck_assert_str_eq(efl_text_cursor_range_text_get(cur_obj, nCur), "Hello"); - ck_assert_str_eq(efl_text_cursor_range_text_get(nCur, cur_obj), "Hello"); - - efl_text_cursor_position_set(nCur, 0); - efl_text_cursor_position_set(cur_obj, 17); + efl_text_cursor_object_markup_insert(cur_obj, "Hello WorldHello World"); + ck_assert_int_eq(efl_text_cursor_object_position_get(cur_obj), 23); + + efl_text_cursor_object_char_coord_set(cur_obj, EINA_POSITION2D(0, 0)); + ck_assert_int_eq(efl_text_cursor_object_position_get(cur_obj), 0); + efl_text_cursor_object_char_coord_set(cur_obj, EINA_POSITION2D(500, 500)); + ck_assert_int_eq(efl_text_cursor_object_position_get(cur_obj), 23); + efl_text_cursor_object_cluster_coord_set(cur_obj, EINA_POSITION2D(0, 0)); + ck_assert_int_eq(efl_text_cursor_object_position_get(cur_obj), 0); + efl_text_cursor_object_cluster_coord_set(cur_obj, EINA_POSITION2D(500, 500)); + ck_assert_int_eq(efl_text_cursor_object_position_get(cur_obj), 23); + + efl_text_cursor_object_position_set(nCur, 0); + efl_text_cursor_object_position_set(cur_obj, 5); + + ck_assert_str_eq(efl_text_cursor_object_range_text_get(cur_obj, nCur), "Hello"); + ck_assert_str_eq(efl_text_cursor_object_range_text_get(nCur, cur_obj), "Hello"); + + efl_text_cursor_object_position_set(nCur, 0); + efl_text_cursor_object_position_set(cur_obj, 17); - Eina_Iterator *iter = efl_text_cursor_range_geometry_get(cur_obj, nCur); + Eina_Iterator *iter = efl_text_cursor_object_range_geometry_get(cur_obj, nCur); Eina_Rect *geoRect; int x = 0; @@ -4706,7 +4706,7 @@ EFL_START_TEST(efl_canvas_textblock_cursor) ck_assert_int_eq(x, 3); - iter = efl_text_cursor_range_precise_geometry_get(cur_obj, nCur); + iter = efl_text_cursor_object_range_precise_geometry_get(cur_obj, nCur); x = 0; EINA_ITERATOR_FOREACH(iter, geoRect) @@ -4718,46 +4718,46 @@ EFL_START_TEST(efl_canvas_textblock_cursor) ck_assert_int_eq(x, 2); - ck_assert_str_eq(efl_text_cursor_range_markup_get(cur_obj, nCur), "Hello WorldHello"); - ck_assert_str_eq(efl_text_cursor_range_markup_get(nCur, cur_obj), "Hello WorldHello"); + ck_assert_str_eq(efl_text_cursor_object_range_markup_get(cur_obj, nCur), "Hello WorldHello"); + ck_assert_str_eq(efl_text_cursor_object_range_markup_get(nCur, cur_obj), "Hello WorldHello"); - efl_text_cursor_position_set(nCur, 0); - efl_text_cursor_position_set(cur_obj, 5); + efl_text_cursor_object_position_set(nCur, 0); + efl_text_cursor_object_position_set(cur_obj, 5); - efl_text_cursor_range_delete(nCur, cur_obj); + efl_text_cursor_object_range_delete(nCur, cur_obj); ck_assert_str_eq(efl_text_markup_get(txt), " WorldHello World"); - ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 0); - ck_assert_int_eq(efl_text_cursor_position_get(nCur), 0); + ck_assert_int_eq(efl_text_cursor_object_position_get(cur_obj), 0); + ck_assert_int_eq(efl_text_cursor_object_position_get(nCur), 0); efl_text_markup_set(txt, "Hello WorldHello World"); - efl_text_cursor_position_set(cur_obj, 6); + efl_text_cursor_object_position_set(cur_obj, 6); Eina_Unicode str[2] = {0}; - str[0] = efl_text_cursor_content_get(cur_obj); + str[0] = efl_text_cursor_object_content_get(cur_obj); ck_assert_str_eq(eina_unicode_unicode_to_utf8(str, NULL), "W"); - efl_text_cursor_char_delete(cur_obj); + efl_text_cursor_object_char_delete(cur_obj); - str[0] = efl_text_cursor_content_get(cur_obj); + str[0] = efl_text_cursor_object_content_get(cur_obj); ck_assert_str_eq(eina_unicode_unicode_to_utf8(str, NULL), "o"); - Eo *cur_txt = efl_text_cursor_text_object_get(cur_obj); - Eo *cur_txt2 = efl_text_cursor_text_object_get(nCur); + Eo *cur_txt = efl_text_cursor_object_text_object_get(cur_obj); + Eo *cur_txt2 = efl_text_cursor_object_text_object_get(nCur); ck_assert_ptr_eq(cur_txt, txt); ck_assert_ptr_eq(cur_txt2, txt); - efl_text_cursor_position_set(cur_obj, 1); - Eina_Rect rect = efl_text_cursor_content_geometry_get(cur_obj); + efl_text_cursor_object_position_set(cur_obj, 1); + Eina_Rect rect = efl_text_cursor_object_content_geometry_get(cur_obj); ck_assert_int_ne(rect.w, 0); ck_assert_int_ne(rect.h, 0); ck_assert_int_ne(rect.x, 0); - rect = efl_text_cursor_geometry_get(cur_obj, EFL_TEXT_CURSOR_TYPE_BEFORE); + rect = efl_text_cursor_object_cursor_geometry_get(cur_obj, EFL_TEXT_CURSOR_TYPE_BEFORE); ck_assert_int_eq(rect.w, 0); ck_assert_int_ne(rect.h, 0); ck_assert_int_ne(rect.x, 0); - Eina_Rect rect2 = efl_text_cursor_geometry_get(cur_obj, EFL_TEXT_CURSOR_TYPE_UNDER); + Eina_Rect rect2 = efl_text_cursor_object_cursor_geometry_get(cur_obj, EFL_TEXT_CURSOR_TYPE_UNDER); ck_assert_int_ne(rect2.w, 0); ck_assert_int_ne(rect2.h, 0); ck_assert_int_ne(rect2.x, 0); @@ -4768,12 +4768,12 @@ EFL_START_TEST(efl_canvas_textblock_cursor) ck_assert_int_eq(rect2.y, rect.y); efl_text_markup_set(txt, "Hello World"); - efl_text_cursor_position_set(cur_obj, 11); - ck_assert(!efl_text_cursor_lower_cursor_geometry_get(cur_obj, &rect2)); + efl_text_cursor_object_position_set(cur_obj, 11); + ck_assert(!efl_text_cursor_object_lower_cursor_geometry_get(cur_obj, &rect2)); #ifdef HAVE_FRIBIDI - efl_text_cursor_text_insert(cur_obj, "مرحباً"); - rect = efl_text_cursor_geometry_get(cur_obj, EFL_TEXT_CURSOR_TYPE_BEFORE); - ck_assert(efl_text_cursor_lower_cursor_geometry_get(cur_obj, &rect2)); + efl_text_cursor_object_text_insert(cur_obj, "مرحباً"); + rect = efl_text_cursor_object_cursor_geometry_get(cur_obj, EFL_TEXT_CURSOR_TYPE_BEFORE); + ck_assert(efl_text_cursor_object_lower_cursor_geometry_get(cur_obj, &rect2)); ck_assert_int_eq(rect2.w, 0); ck_assert_int_ne(rect2.h, 0); ck_assert_int_ne(rect2.x, 0); @@ -4786,9 +4786,9 @@ EFL_START_TEST(efl_canvas_textblock_cursor) //Efl able to deal with br tab without closing tag "/" efl_text_markup_set(txt, "a
aa"); - efl_text_cursor_move(nCur, EFL_TEXT_CURSOR_MOVE_TYPE_FIRST); - efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_LAST); - efl_text_cursor_range_delete(nCur, cur_obj); + efl_text_cursor_object_move(nCur, EFL_TEXT_CURSOR_MOVE_TYPE_FIRST); + efl_text_cursor_object_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_LAST); + efl_text_cursor_object_range_delete(nCur, cur_obj); ck_assert_str_eq(efl_text_markup_get(txt), ""); END_EFL_CANVAS_TEXTBLOCK_TEST(); @@ -4799,7 +4799,7 @@ EFL_END_TEST EFL_START_TEST(efl_canvas_textblock_markup) { START_EFL_CANVAS_TEXTBLOCK_TEST(); - Efl_Text_Cursor *start, *end; + Efl_Text_Cursor_Object *start, *end; char *res; start = efl_canvas_textblock_cursor_create(txt); @@ -4807,16 +4807,16 @@ EFL_START_TEST(efl_canvas_textblock_markup) efl_text_set(txt, "\n\n\n"); - efl_text_cursor_position_set(start, 1); - efl_text_cursor_position_set(end, 2); - res = efl_text_cursor_range_markup_get(start, end); + efl_text_cursor_object_position_set(start, 1); + efl_text_cursor_object_position_set(end, 2); + res = efl_text_cursor_object_range_markup_get(start, end); ck_assert_str_eq(res, "
"); free(res); efl_text_set(txt, "a\u2029bc\ndef\n\u2029"); - efl_text_cursor_position_set(start, 2); - efl_text_cursor_position_set(end, 5); - res = efl_text_cursor_range_markup_get(start, end); + efl_text_cursor_object_position_set(start, 2); + efl_text_cursor_object_position_set(end, 5); + res = efl_text_cursor_object_range_markup_get(start, end); ck_assert_str_eq(res, "bc
"); free(res); -- cgit v1.2.1