From 30f74a759d3cd40f1114be4cc7141305f2d987f0 Mon Sep 17 00:00:00 2001 From: Daniel Hirt Date: Thu, 8 Jun 2017 13:07:12 +0300 Subject: [PATCH] Text cursor: add interface and implement in Canvas.Text --- src/Makefile_Efl.am | 1 + src/bin/elementary/test_efl_ui_text.c | 26 +- src/lib/efl/Efl.h | 1 + src/lib/efl/interfaces/efl_interfaces_main.c | 1 + src/lib/efl/interfaces/efl_text_cursor.eo | 212 ++++++++++++++ src/lib/efl/interfaces/efl_text_types.eot | 12 +- .../efl_ui_internal_text_interactive.c | 78 ++--- src/lib/elementary/efl_ui_text.c | 107 +++---- src/lib/elementary/efl_ui_text.eo | 2 +- src/lib/elementary/efl_ui_text_interactive.eo | 4 +- src/lib/evas/canvas/efl_canvas_text.eo | 271 +++--------------- src/lib/evas/canvas/evas_object_textblock.c | 86 +++--- src/lib/evas/canvas/evas_textblock_legacy.h | 5 +- 13 files changed, 432 insertions(+), 374 deletions(-) create mode 100644 src/lib/efl/interfaces/efl_text_cursor.eo diff --git a/src/Makefile_Efl.am b/src/Makefile_Efl.am index 6fda23e101..4c65a7920e 100644 --- a/src/Makefile_Efl.am +++ b/src/Makefile_Efl.am @@ -19,6 +19,7 @@ efl_eolian_files = \ lib/efl/interfaces/efl_text_font.eo \ lib/efl/interfaces/efl_text_style.eo \ lib/efl/interfaces/efl_text_format.eo \ + lib/efl/interfaces/efl_text_cursor.eo \ lib/efl/interfaces/efl_text_properties.eo \ lib/efl/interfaces/efl_gfx_stack.eo \ lib/efl/interfaces/efl_gfx_view.eo \ diff --git a/src/bin/elementary/test_efl_ui_text.c b/src/bin/elementary/test_efl_ui_text.c index 2a438d5640..bfcb4cd108 100644 --- a/src/bin/elementary/test_efl_ui_text.c +++ b/src/bin/elementary/test_efl_ui_text.c @@ -11,11 +11,11 @@ _apply_style(Eo *obj, size_t start_pos, size_t end_pos, const char *style) { Efl_Canvas_Text_Cursor *start, *end; - start = efl_canvas_text_cursor_get(obj); - end = efl_canvas_text_cursor_get(obj); + start = efl_text_cursor_get(obj); + end = efl_text_cursor_get(obj); - efl_canvas_text_cursor_position_set(obj, start, start_pos); - efl_canvas_text_cursor_position_set(obj, end, end_pos); + efl_text_cursor_position_set(obj, start, start_pos); + efl_text_cursor_position_set(obj, end, end_pos); efl_canvas_text_annotation_insert(obj, start, end, style); } @@ -101,8 +101,8 @@ my_efl_ui_text_bt_3(void *data, Evas_Object *obj EINA_UNUSED, void *event_info E const char *s = efl_canvas_text_range_text_get(data, sel_start, sel_end); printf("SELECTION REGION: %d - %d\n", - efl_canvas_text_cursor_position_get(obj, sel_start), - efl_canvas_text_cursor_position_get(obj, sel_end)); + efl_text_cursor_position_get(obj, sel_start), + efl_text_cursor_position_get(obj, sel_end)); printf("SELECTION:\n"); if (s) printf("%s\n", s); } @@ -111,7 +111,7 @@ static void my_efl_ui_text_bt_4(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) { Evas_Object *en = data; - efl_canvas_text_cursor_object_item_insert(obj, efl_canvas_text_cursor_get(en), + efl_canvas_text_cursor_object_item_insert(obj, efl_text_cursor_get(en), "size=32x32 href=emoticon"); } @@ -178,16 +178,16 @@ test_efl_ui_text(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *eve efl_text_font_width_set(en, EFL_TEXT_FONT_WIDTH_ULTRACONDENSED); efl_text_style_normal_color_set(en, 255, 255, 255, 255); - main_cur = efl_canvas_text_cursor_get(en); - cur = efl_canvas_text_cursor_new(en); + main_cur = efl_text_cursor_get(en); + cur = efl_text_cursor_new(en); - efl_canvas_text_cursor_position_set(en, cur, 2); + efl_text_cursor_position_set(en, cur, 2); efl_canvas_text_cursor_object_item_insert(en, cur, "size=32x32 href=emoticon"); - efl_canvas_text_cursor_position_set(en, cur, 50); + efl_text_cursor_position_set(en, cur, 50); efl_canvas_text_cursor_object_item_insert(en, cur, "size=32x32 href=emoticon"); - efl_canvas_text_cursor_position_set(en, main_cur, 5); - efl_canvas_text_cursor_position_set(en, cur, 20); + efl_text_cursor_position_set(en, main_cur, 5); + efl_text_cursor_position_set(en, cur, 20); efl_canvas_text_annotation_insert(en, main_cur, cur, "a href=#hello"); diff --git a/src/lib/efl/Efl.h b/src/lib/efl/Efl.h index 01f72df8ed..eb06539b41 100644 --- a/src/lib/efl/Efl.h +++ b/src/lib/efl/Efl.h @@ -151,6 +151,7 @@ typedef Efl_Gfx_Path_Command_Type Efl_Gfx_Path_Command; #include "interfaces/efl_text_font.eo.h" #include "interfaces/efl_text_style.eo.h" #include "interfaces/efl_text_format.eo.h" +#include "interfaces/efl_text_cursor.eo.h" #else diff --git a/src/lib/efl/interfaces/efl_interfaces_main.c b/src/lib/efl/interfaces/efl_interfaces_main.c index a001cee90c..0b977a589f 100644 --- a/src/lib/efl/interfaces/efl_interfaces_main.c +++ b/src/lib/efl/interfaces/efl_interfaces_main.c @@ -17,6 +17,7 @@ #include "interfaces/efl_text_font.eo.c" #include "interfaces/efl_text_style.eo.c" #include "interfaces/efl_text_format.eo.c" +#include "interfaces/efl_text_cursor.eo.c" #include "interfaces/efl_gfx.eo.c" #include "interfaces/efl_gfx_buffer.eo.c" diff --git a/src/lib/efl/interfaces/efl_text_cursor.eo b/src/lib/efl/interfaces/efl_text_cursor.eo new file mode 100644 index 0000000000..c2aeb3b022 --- /dev/null +++ b/src/lib/efl/interfaces/efl_text_cursor.eo @@ -0,0 +1,212 @@ +import eina_types; +import efl_text_types; + +interface Efl.Text.Cursor { + [[Cursor API + + @since 1.20 + ]] + methods { + // Cursor + @property cursor { + [[The object's main cursor. + + @since 1.18 + ]] + get { + legacy: null; + return: ptr(Efl.Text.Cursor.Cursor_Data); [[Text cursor object]] + } + } + @property cursor_position { + set { legacy: null; } + get { legacy: null; } + values { + position: int; + } + keys { + cur: ptr(Efl.Text.Cursor.Cursor_Data); + } + } + @property cursor_content { + [[The content of the cursor (the character under the cursor)]] + get { + legacy: null; + } + values { + content: Eina.Unicode; [[The unicode codepoint of the character]] + } + keys { + cur: ptr(const(Efl.Text.Cursor.Cursor_Data)); + } + } + @property cursor_geometry { + [[Returns the geometry of two cursors ("split cursor"), if logical cursor is + between LTR/RTL text, also considering paragraph direction. + Upper cursor is shown for the text of the same direction as paragraph, + lower cursor - for opposite. + + Split cursor geometry is valid only in '|' cursor mode. + In this case $true is returned and $cx2, $cy2, $cw2, $ch2 are set. + ]] + get { + legacy: null; + return: bool; [[ $true if split cursor, $false otherwise.]] + } + keys { + cur: ptr(const(Efl.Text.Cursor.Cursor_Data)); + ctype: Efl.Text.Cursor.Cursor_Type; [[The type of the cursor.]] + } + values { + cx: int; [[The x of the cursor (or upper cursor)]] + cy: int; [[The y of the cursor (or upper cursor)]] + cw: int; [[The width of the cursor (or upper cursor)]] + ch: int; [[The height of the cursor (or upper cursor)]] + cx2: int; [[The x of the lower cursor]] + cy2: int; [[The y of the lower cursor]] + cw2: int; [[The width of the lower cursor]] + ch2: int; [[The height of the lower cursor]] + } + } + cursor_new { + legacy: null; + return: ptr(Efl.Text.Cursor.Cursor_Data); + } + cursor_free { + legacy: null; + params { + cur: ptr(Efl.Text.Cursor.Cursor_Data); + } + } + cursor_equal { + legacy: null; + params { + cur1: ptr(const(Efl.Text.Cursor.Cursor_Data)); + cur2: ptr(const(Efl.Text.Cursor.Cursor_Data)); + } + return: bool; + } + cursor_compare { + legacy: null; + params { + cur1: ptr(const(Efl.Text.Cursor.Cursor_Data)); + cur2: ptr(const(Efl.Text.Cursor.Cursor_Data)); + } + return: int; + } + cursor_copy { + legacy: null; + params { + dst: ptr(Efl.Text.Cursor.Cursor_Data); + src: ptr(const(Efl.Text.Cursor.Cursor_Data)); + } + } + cursor_char_next { + legacy: null; + params { + cur: ptr(Efl.Text.Cursor.Cursor_Data); + } + } + cursor_char_prev { + legacy: null; + params { + cur: ptr(Efl.Text.Cursor.Cursor_Data); + } + } + cursor_paragraph_char_first { + legacy: null; + params { + cur: ptr(Efl.Text.Cursor.Cursor_Data); + } + } + cursor_paragraph_char_last { + legacy: null; + params { + cur: ptr(Efl.Text.Cursor.Cursor_Data); + } + } + cursor_word_start { + legacy: null; + params { + cur: ptr(Efl.Text.Cursor.Cursor_Data); + } + } + cursor_word_end { + legacy: null; + params { + cur: ptr(Efl.Text.Cursor.Cursor_Data); + } + } + cursor_line_char_first { + legacy: null; + params { + cur: ptr(Efl.Text.Cursor.Cursor_Data); + } + } + cursor_line_char_last { + legacy: null; + params { + cur: ptr(Efl.Text.Cursor.Cursor_Data); + } + } + cursor_paragraph_first { + legacy: null; + params { + cur: ptr(Efl.Text.Cursor.Cursor_Data); + } + } + cursor_paragraph_last { + legacy: null; + params { + cur: ptr(Efl.Text.Cursor.Cursor_Data); + } + } + cursor_paragraph_next { + [[Advances to the start of the next text node]] + legacy: null; + params { + cur: ptr(Efl.Text.Cursor.Cursor_Data); + } + } + cursor_paragraph_prev { + [[Advances to the end of the previous text node]] + legacy: null; + params { + cur: ptr(Efl.Text.Cursor.Cursor_Data); + } + } + cursor_line_jump_by { + legacy: null; + params { + cur: ptr(Efl.Text.Cursor.Cursor_Data); + by: int; + } + } + cursor_coord_set { + legacy: null; + params { + cur: ptr(Efl.Text.Cursor.Cursor_Data); + @in x: int; [[X coord to set by.]] + @in y: int; [[Y coord to set by.]] + } + } + cursor_text_insert { + [[Adds text to the current cursor position and set the cursor to + *after* the start of the text just added. + ]] + legacy: null; + params { + cur: ptr(Efl.Text.Cursor.Cursor_Data); + @in text: string; [[Text to append (UTF-8 format).]] + } + return: int; [[Length of the appended text.]] + } + cursor_char_delete { + [[Deletes a single character from position pointed by given cursor.]] + legacy: null; + params { + cur: ptr(Efl.Text.Cursor.Cursor_Data); + } + } + } +} diff --git a/src/lib/efl/interfaces/efl_text_types.eot b/src/lib/efl/interfaces/efl_text_types.eot index 0b12c47240..739e42c5ce 100644 --- a/src/lib/efl/interfaces/efl_text_types.eot +++ b/src/lib/efl/interfaces/efl_text_types.eot @@ -8,4 +8,14 @@ enum Efl.Text.Bidirectional_Type { } struct Efl.Canvas.Text.Annotation; [[EFL text annotations data structure]] -struct Efl.Canvas.Text.Cursor; [[Text cursor data structure]] + +struct Efl.Text.Cursor.Cursor_Data; [[Text cursor data structure]] + +enum Efl.Text.Cursor.Cursor_Type +{ + [[Text cursor types]] + legacy: efl_text_cursor_type; + before, [[Cursor type before]] + under [[Cursor type under]] +} + diff --git a/src/lib/elementary/efl_ui_internal_text_interactive.c b/src/lib/elementary/efl_ui_internal_text_interactive.c index e996c232e9..8353a82039 100644 --- a/src/lib/elementary/efl_ui_internal_text_interactive.c +++ b/src/lib/elementary/efl_ui_internal_text_interactive.c @@ -65,7 +65,7 @@ _preedit_del(Eo *obj, Efl_Ui_Internal_Text_Interactive_Data *en) { if (!en || !en->have_preedit) return; if (!en->preedit_start || !en->preedit_end) return; - if (efl_canvas_text_cursor_equal(obj, en->preedit_start, en->preedit_end)) return; + if (efl_text_cursor_equal(obj, en->preedit_start, en->preedit_end)) return; /* delete the preedit characters */ evas_textblock_cursor_range_delete(en->preedit_start, en->preedit_end); @@ -75,7 +75,7 @@ static Eina_Bool _entry_imf_retrieve_surrounding_cb(void *data, Ecore_IMF_Context *ctx EINA_UNUSED, char **text, int *cursor_pos) { Efl_Canvas_Text *obj = data; - Efl_Canvas_Text_Cursor *cur = efl_canvas_text_cursor_get(obj); + Efl_Canvas_Text_Cursor *cur = efl_text_cursor_get(obj); const char *str; if (text) @@ -177,7 +177,7 @@ static void _entry_imf_event_preedit_changed_cb(void *data, Ecore_IMF_Context *ctx EINA_UNUSED, void *event_info EINA_UNUSED) { Efl_Canvas_Text *obj = data; - Efl_Canvas_Text_Cursor *cur = efl_canvas_text_cursor_get(obj); + Efl_Canvas_Text_Cursor *cur = efl_text_cursor_get(obj); Efl_Ui_Internal_Text_Interactive_Data *en = efl_data_scope_get(obj, MY_CLASS); int cursor_pos; int preedit_start_pos, preedit_end_pos; @@ -330,7 +330,7 @@ static void _entry_imf_event_delete_surrounding_cb(void *data, Ecore_IMF_Context *ctx EINA_UNUSED, void *event_info) { Efl_Canvas_Text *obj = data; - Efl_Canvas_Text_Cursor *cur = efl_canvas_text_cursor_get(obj); + Efl_Canvas_Text_Cursor *cur = efl_text_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; Evas_Textblock_Cursor *del_start, *del_end; @@ -373,13 +373,13 @@ static void _entry_imf_event_selection_set_cb(void *data, Ecore_IMF_Context *ctx EINA_UNUSED, void *event_info) { Efl_Canvas_Text *obj = data; - Efl_Canvas_Text_Cursor *cur = efl_canvas_text_cursor_get(obj); + Efl_Canvas_Text_Cursor *cur = efl_text_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_canvas_text_cursor_position_set(obj, cur, ev->start); + efl_text_cursor_position_set(obj, cur, ev->start); } else { @@ -421,7 +421,7 @@ _entry_imf_cursor_location_set(Eo *obj, Efl_Canvas_Text_Cursor *cur, Efl_Ui_Inte Evas_Coord cx = 0, cy = 0, cw = 0, ch = 0; if (!en->imf_context) return; - efl_canvas_text_cursor_geometry_get(obj, cur, EFL_CANVAS_TEXT_CURSOR_TYPE_BEFORE, &cx, &cy, &cw, &ch, NULL, NULL, NULL, NULL); + efl_text_cursor_geometry_get(obj, cur, EFL_TEXT_CURSOR_TYPE_BEFORE, &cx, &cy, &cw, &ch, NULL, NULL, NULL, NULL); ecore_imf_context_cursor_location_set(en->imf_context, cx, cy, cw, ch); // FIXME: ecore_imf_context_bidi_direction_set(en->imf_context, (Ecore_IMF_BiDi_Direction)dir); #else @@ -464,7 +464,7 @@ _focus_in_cb(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj, void if (!en->imf_context) return; - cur = efl_canvas_text_cursor_get(obj); + cur = efl_text_cursor_get(obj); ecore_imf_context_focus_in(en->imf_context); _entry_imf_cursor_info_set(obj, cur, en); #endif @@ -550,7 +550,7 @@ _sel_extend(Evas_Textblock_Cursor *c, Evas_Object *o, Efl_Ui_Internal_Text_Inter { if (!en->sel_end) return; _sel_enable(c, o, en); - if (efl_canvas_text_cursor_equal(o, c, en->sel_end)) return; + if (efl_text_cursor_equal(o, c, en->sel_end)) return; evas_textblock_cursor_copy(c, en->sel_end); @@ -576,7 +576,7 @@ _sel_clear(Evas_Object *o EINA_UNUSED, Efl_Ui_Internal_Text_Interactive_Data *en { en->have_selection = EINA_FALSE; - efl_canvas_text_cursor_copy(o, en->sel_start, en->sel_end); + efl_text_cursor_copy(o, en->sel_start, en->sel_end); } } @@ -618,7 +618,7 @@ _delete_emit(Eo *obj, Evas_Textblock_Cursor *c, Efl_Ui_Internal_Text_Interactive { Efl_Ui_Text_Interactive_Change_Info info = { NULL, 0, 0, 0, 0 }; Eina_Unicode content[2]; - content[0] = efl_canvas_text_cursor_content_get(obj, c); + content[0] = efl_text_cursor_content_get(obj, c); content[1] = 0; if (!content[0]) return; @@ -719,7 +719,7 @@ _key_down_cb(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj, void /* FIXME: Maybe allow selctions to happen even when not editable. */ if (!en->editable) return; - cur = efl_canvas_text_cursor_get(obj); + cur = efl_text_cursor_get(obj); old_cur_pos = evas_textblock_cursor_pos_get(cur); control = evas_key_modifier_is_set(ev->modifiers, "Control"); @@ -770,7 +770,7 @@ _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); - efl_canvas_text_cursor_line_jump_by(obj, cur, -1); + efl_text_cursor_line_jump_by(obj, cur, -1); ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; _key_down_sel_post(obj, cur, en, shift); @@ -784,7 +784,7 @@ _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); - efl_canvas_text_cursor_line_jump_by(obj, cur, 1); + efl_text_cursor_line_jump_by(obj, cur, 1); ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; _key_down_sel_post(obj, cur, en, shift); @@ -796,12 +796,12 @@ _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_canvas_text_cursor_char_prev(obj, cur); + efl_text_cursor_char_prev(obj, cur); #if defined(__APPLE__) && defined(__MACH__) - if (altgr) efl_canvas_text_cursor_word_start(cur); + if (altgr) efl_text_cursor_word_start(cur); #else /* If control is pressed, go to the start of the word */ - if (control) efl_canvas_text_cursor_word_start(obj, cur); + if (control) efl_text_cursor_word_start(obj, cur); #endif ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; @@ -814,12 +814,12 @@ _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_canvas_text_cursor_word_end(cur); + if (altgr) efl_text_cursor_word_end(cur); #else /* If control is pressed, go to the end of the word */ - if (control) efl_canvas_text_cursor_word_end(obj, cur); + if (control) efl_text_cursor_word_end(obj, cur); #endif - efl_canvas_text_cursor_char_next(obj, cur); + efl_text_cursor_char_next(obj, cur); ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; _key_down_sel_post(obj, cur, en, shift); @@ -832,14 +832,14 @@ _key_down_cb(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj, void // del to start of previous word Evas_Textblock_Cursor *tc = evas_object_textblock_cursor_new(obj); - efl_canvas_text_cursor_copy(obj, tc, cur); + efl_text_cursor_copy(obj, tc, cur); evas_textblock_cursor_char_prev(cur); evas_textblock_cursor_word_start(cur); _range_del_emit(obj, cur, tc); //efl_del(tc); - efl_canvas_text_cursor_free(obj, tc); + efl_text_cursor_free(obj, tc); } else if ((alt) && (shift)) { @@ -871,14 +871,14 @@ _key_down_cb(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj, void // del to end of next word Evas_Textblock_Cursor *tc = evas_object_textblock_cursor_new(obj); - efl_canvas_text_cursor_copy(obj, tc, cur); + efl_text_cursor_copy(obj, tc, cur); evas_textblock_cursor_word_end(cur); evas_textblock_cursor_char_next(cur); _range_del_emit(obj, cur, tc); //efl_del(tc); - efl_canvas_text_cursor_free(obj, tc); + efl_text_cursor_free(obj, tc); } else if (shift) { @@ -906,9 +906,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_canvas_text_cursor_paragraph_first(obj, cur); + efl_text_cursor_paragraph_first(obj, cur); else - efl_canvas_text_cursor_line_char_first(obj, cur); + efl_text_cursor_line_char_first(obj, cur); _key_down_sel_post(obj, cur, en, shift); ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; @@ -921,9 +921,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_canvas_text_cursor_paragraph_last(obj, cur); + efl_text_cursor_paragraph_last(obj, cur); else - efl_canvas_text_cursor_line_char_last(obj, cur); + efl_text_cursor_line_char_last(obj, cur); _key_down_sel_post(obj, cur, en, shift); ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; @@ -948,7 +948,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_canvas_text_cursor_line_jump_by(obj, cur, -10); + efl_text_cursor_line_jump_by(obj, cur, -10); _key_down_sel_post(obj, cur, en, shift); ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; @@ -959,7 +959,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_canvas_text_cursor_line_jump_by(obj, cur, 10); + efl_text_cursor_line_jump_by(obj, cur, 10); _key_down_sel_post(obj, cur, en, shift); ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; @@ -1039,10 +1039,10 @@ _key_down_cb(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj, void } info.insert = EINA_TRUE; info.content = string; - info.position = efl_canvas_text_cursor_position_get(obj, cur); + info.position = efl_text_cursor_position_get(obj, cur); info.length = eina_unicode_utf8_get_len(string); - efl_canvas_text_cursor_text_insert(obj, cur, string); + efl_text_cursor_text_insert(obj, cur, string); efl_event_callback_legacy_call(obj, EFL_UI_TEXT_INTERACTIVE_EVENT_CHANGED_USER, &info); @@ -1098,7 +1098,7 @@ _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_Canvas_Text_Cursor *cur = efl_canvas_text_cursor_get(obj); + Efl_Canvas_Text_Cursor *cur = efl_text_cursor_get(obj); Evas_Textblock_Cursor *tc = NULL; Eina_Bool dosel = EINA_FALSE; Eina_Bool shift; @@ -1209,7 +1209,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_Canvas_Text_Cursor *cur = efl_canvas_text_cursor_get(obj); + Efl_Canvas_Text_Cursor *cur = efl_text_cursor_get(obj); Evas_Event_Mouse_Up *ev = event_info; if ((!ev) || (ev->button != 1)) return; @@ -1233,7 +1233,7 @@ _mouse_up_cb(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj, void if (en->select_allow) { - efl_canvas_text_cursor_copy(obj, en->sel_end, cur); + efl_text_cursor_copy(obj, en->sel_end, cur); } if (en->selecting) { @@ -1250,7 +1250,7 @@ _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_Canvas_Text_Cursor *cur = efl_canvas_text_cursor_get(obj); + Efl_Canvas_Text_Cursor *cur = efl_text_cursor_get(obj); Evas_Event_Mouse_Move *ev = event_info; Evas_Coord x, y, w, h; Evas_Textblock_Cursor *tc; @@ -1280,21 +1280,21 @@ _mouse_move_cb(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj, vo if (multiline) { - efl_canvas_text_cursor_coord_set(obj, cur, cx, cy); + efl_text_cursor_coord_set(obj, cur, cx, cy); } else { Evas_Coord lx, ly, lw, lh; evas_textblock_cursor_paragraph_first(cur); evas_textblock_cursor_line_geometry_get(cur, &lx, &ly, &lw, &lh); - efl_canvas_text_cursor_coord_set(obj, cur, cx, ly + (lh / 2)); + efl_text_cursor_coord_set(obj, cur, cx, ly + (lh / 2)); } if (en->select_allow) { _sel_extend(cur, obj, en); - if (!efl_canvas_text_cursor_equal(obj, en->sel_start, en->sel_end)) + if (!efl_text_cursor_equal(obj, en->sel_start, en->sel_end)) _sel_enable(cur, obj, en); } evas_textblock_cursor_free(tc); diff --git a/src/lib/elementary/efl_ui_text.c b/src/lib/elementary/efl_ui_text.c index 235f6f99e7..7d1bc9a58f 100644 --- a/src/lib/elementary/efl_ui_text.c +++ b/src/lib/elementary/efl_ui_text.c @@ -579,8 +579,8 @@ _update_selection_handler(Eo *obj) evas_object_geometry_get(sd->entry_edje, &ent_x, &ent_y, NULL, NULL); - efl_canvas_text_cursor_geometry_get(obj, sel_start, - EFL_CANVAS_TEXT_CURSOR_TYPE_BEFORE, + efl_text_cursor_geometry_get(obj, sel_start, + EFL_TEXT_CURSOR_TYPE_BEFORE, &sx, &sy, NULL, &sh, NULL, NULL, NULL, NULL); hx = ent_x + sx; @@ -605,8 +605,8 @@ _update_selection_handler(Eo *obj) sd->start_handler_shown = EINA_FALSE; } - efl_canvas_text_cursor_geometry_get(obj, sel_end, - EFL_CANVAS_TEXT_CURSOR_TYPE_BEFORE, + efl_text_cursor_geometry_get(obj, sel_end, + EFL_TEXT_CURSOR_TYPE_BEFORE, &ex, &ey, NULL, &eh, NULL, NULL, NULL, NULL); hx = ent_x + ex; @@ -759,12 +759,12 @@ _selection_data_cb(void *data EINA_UNUSED, { Efl_Canvas_Text_Cursor *cur, *start, *end; efl_ui_text_interactive_selection_cursors_get(obj, &start, &end); - if (!efl_canvas_text_cursor_equal(obj, start, end)) + if (!efl_text_cursor_equal(obj, start, end)) { efl_canvas_text_range_delete(obj, start, end); } - cur = efl_canvas_text_cursor_get(obj); - efl_canvas_text_cursor_text_insert(obj, cur, buf); + cur = efl_text_cursor_get(obj); + efl_text_cursor_text_insert(obj, cur, buf); } free(buf); @@ -943,6 +943,7 @@ _efl_ui_text_elm_widget_theme_apply(Eo *obj, Efl_Ui_Text_Data *sd) (sd->entry_edje, "elm.text", EINA_FALSE); elm_object_text_set(obj, t); + efl_text_set(obj, t); eina_stringshare_del(t); if (elm_widget_disabled_get(obj)) @@ -1055,10 +1056,10 @@ _cursor_geometry_recalc(Evas_Object *obj) x = y = w = h = 0; Efl_Canvas_Text_Cursor *main_cur = - efl_canvas_text_cursor_get(obj); + efl_text_cursor_get(obj); - efl_canvas_text_cursor_geometry_get(obj, main_cur, - EFL_CANVAS_TEXT_CURSOR_TYPE_BEFORE, + efl_text_cursor_geometry_get(obj, main_cur, + EFL_TEXT_CURSOR_TYPE_BEFORE, &cx, &cy, &cw, &ch, NULL, NULL, NULL, NULL); edje_object_size_min_restricted_calc(sd->cursor, &cw, NULL, cw, 0); if (cw < 1) cw = 1; @@ -2777,9 +2778,9 @@ _selection_handlers_offset_calc(Evas_Object *obj, Evas_Object *handler, Evas_Coo EFL_UI_TEXT_DATA_GET(obj, sd); evas_object_geometry_get(sd->entry_edje, &ex, &ey, NULL, NULL); - efl_canvas_text_cursor_geometry_get(obj, - efl_canvas_text_cursor_get(obj), - EFL_CANVAS_TEXT_CURSOR_TYPE_BEFORE, + efl_text_cursor_geometry_get(obj, + efl_text_cursor_get(obj), + EFL_TEXT_CURSOR_TYPE_BEFORE, &cx, &cy, &cw, &ch, NULL, NULL, NULL, NULL); edje_object_size_min_calc(handler, NULL, &hh); @@ -2819,10 +2820,10 @@ _start_handler_mouse_down_cb(void *data, /* Get the cursors */ efl_ui_text_interactive_selection_cursors_get(text_obj, &sel_start, &sel_end); - main_cur = efl_canvas_text_cursor_get(text_obj); + main_cur = efl_text_cursor_get(text_obj); - start_pos = efl_canvas_text_cursor_position_get(obj, sel_start); - end_pos = efl_canvas_text_cursor_position_get(obj, sel_end); + start_pos = efl_text_cursor_position_get(obj, sel_start); + end_pos = efl_text_cursor_position_get(obj, sel_end); if (start_pos <= end_pos) { @@ -2834,7 +2835,7 @@ _start_handler_mouse_down_cb(void *data, pos = end_pos; sd->sel_handler_cursor = sel_end; } - efl_canvas_text_cursor_position_set(obj, main_cur, pos); + efl_text_cursor_position_set(obj, main_cur, pos); _selection_handlers_offset_calc(data, sd->start_handler, ev->canvas.x, ev->canvas.y); } @@ -2875,11 +2876,11 @@ _start_handler_mouse_move_cb(void *data, cy = ev->cur.canvas.y - sd->oy - ey; if (cx <= 0) cx = 1; - efl_canvas_text_cursor_coord_set(obj, sd->sel_handler_cursor, cx, cy); - pos = efl_canvas_text_cursor_position_get(obj, sd->sel_handler_cursor); + efl_text_cursor_coord_set(obj, sd->sel_handler_cursor, cx, cy); + pos = efl_text_cursor_position_get(obj, sd->sel_handler_cursor); /* Set the main cursor. */ - efl_canvas_text_cursor_position_set(obj, efl_canvas_text_cursor_get(data), pos); + efl_text_cursor_position_set(obj, efl_text_cursor_get(data), pos); ELM_SAFE_FREE(sd->longpress_timer, ecore_timer_del); sd->long_pressed = EINA_FALSE; @@ -2905,10 +2906,10 @@ _end_handler_mouse_down_cb(void *data, Eo *text_obj = edje_object_part_swallow_get(sd->entry_edje, "elm.text"); efl_ui_text_interactive_selection_cursors_get(text_obj, &sel_start, &sel_end); - main_cur = efl_canvas_text_cursor_get(text_obj); + main_cur = efl_text_cursor_get(text_obj); - start_pos = efl_canvas_text_cursor_position_get(obj, sel_start); - end_pos = efl_canvas_text_cursor_position_get(obj, sel_end); + start_pos = efl_text_cursor_position_get(obj, sel_start); + end_pos = efl_text_cursor_position_get(obj, sel_end); if (start_pos < end_pos) { @@ -2921,7 +2922,7 @@ _end_handler_mouse_down_cb(void *data, sd->sel_handler_cursor = sel_start; } - efl_canvas_text_cursor_position_set(obj, main_cur, pos); + efl_text_cursor_position_set(obj, main_cur, pos); _selection_handlers_offset_calc(data, sd->end_handler, ev->canvas.x, ev->canvas.y); } @@ -2962,10 +2963,10 @@ _end_handler_mouse_move_cb(void *data, cy = ev->cur.canvas.y - sd->oy - ey; if (cx <= 0) cx = 1; - efl_canvas_text_cursor_coord_set(obj, sd->sel_handler_cursor, cx, cy); - pos = efl_canvas_text_cursor_position_get(obj, sd->sel_handler_cursor); + efl_text_cursor_coord_set(obj, sd->sel_handler_cursor, cx, cy); + pos = efl_text_cursor_position_get(obj, sd->sel_handler_cursor); /* Set the main cursor. */ - efl_canvas_text_cursor_position_set(obj, efl_canvas_text_cursor_get(data), pos); + efl_text_cursor_position_set(obj, efl_text_cursor_get(data), pos); ELM_SAFE_FREE(sd->longpress_timer, ecore_timer_del); sd->long_pressed = EINA_FALSE; if (_elm_config->magnifier_enable) @@ -3457,8 +3458,8 @@ _efl_ui_text_selection_handler_disabled_get(Eo *obj EINA_UNUSED, Efl_Ui_Text_Dat static void _efl_ui_text_entry_insert(Eo *obj, Efl_Ui_Text_Data *sd, const char *entry) { - Efl_Canvas_Text_Cursor *cur_obj = efl_canvas_text_cursor_get(obj); - efl_canvas_text_cursor_text_insert(obj, cur_obj, entry); + Efl_Canvas_Text_Cursor *cur_obj = efl_text_cursor_get(obj); + efl_text_cursor_text_insert(obj, cur_obj, entry); sd->changed = EINA_TRUE; elm_layout_sizing_eval(obj); } @@ -3528,8 +3529,8 @@ _efl_ui_text_select_region_set(Eo *obj, Efl_Ui_Text_Data *sd, int start, int end efl_ui_text_interactive_selection_cursors_get(obj, &sel_start, &sel_end); - efl_canvas_text_cursor_position_set(obj, sel_start, start); - efl_canvas_text_cursor_position_set(obj, sel_end, end); + efl_text_cursor_position_set(obj, sel_start, start); + efl_text_cursor_position_set(obj, sel_end, end); } EOLIAN static void @@ -4223,13 +4224,13 @@ fail: EOLIAN static int _efl_ui_text_elm_interface_atspi_text_caret_offset_get(Eo *obj, Efl_Ui_Text_Data *_pd EINA_UNUSED) { - return efl_canvas_text_cursor_position_get(obj, efl_canvas_text_cursor_get(obj)); + return efl_text_cursor_position_get(obj, efl_text_cursor_get(obj)); } EOLIAN static Eina_Bool _efl_ui_text_elm_interface_atspi_text_caret_offset_set(Eo *obj, Efl_Ui_Text_Data *_pd EINA_UNUSED, int offset) { - efl_canvas_text_cursor_position_set(obj, efl_canvas_text_cursor_get(obj), offset); + efl_text_cursor_position_set(obj, efl_text_cursor_get(obj), offset); return EINA_TRUE; } @@ -4506,11 +4507,11 @@ _efl_ui_text_elm_interface_atspi_text_default_attributes_get(Eo *obj, Efl_Ui_Tex Efl_Canvas_Text_Annotation *an; /* Retrieve all annotations in the text. */ - start = efl_canvas_text_cursor_new(obj); - end = efl_canvas_text_cursor_new(obj); + start = efl_text_cursor_new(obj); + end = efl_text_cursor_new(obj); - efl_canvas_text_cursor_paragraph_first(obj, start); - efl_canvas_text_cursor_paragraph_last(obj, end); + efl_text_cursor_paragraph_first(obj, start); + efl_text_cursor_paragraph_last(obj, end); annotations = efl_canvas_text_range_annotations_get(obj, start, end); @@ -4535,8 +4536,8 @@ _efl_ui_text_elm_interface_atspi_text_editable_content_set(Eo *obj, Efl_Ui_Text_ EOLIAN static Eina_Bool _efl_ui_text_elm_interface_atspi_text_editable_insert(Eo *obj, Efl_Ui_Text_Data *pd, const char *string, int position) { - Efl_Canvas_Text_Cursor *cur_obj = efl_canvas_text_cursor_get(obj); - efl_canvas_text_cursor_position_set(obj, cur_obj, position); + Efl_Canvas_Text_Cursor *cur_obj = efl_text_cursor_get(obj); + efl_text_cursor_position_set(obj, cur_obj, position); _efl_ui_text_entry_insert(obj, pd, string); return EINA_TRUE; @@ -4585,8 +4586,8 @@ _efl_ui_text_elm_interface_atspi_text_editable_delete(Eo *obj, Efl_Ui_Text_Data EOLIAN static Eina_Bool _efl_ui_text_elm_interface_atspi_text_editable_paste(Eo *obj, Efl_Ui_Text_Data *_pd EINA_UNUSED, int position) { - Efl_Canvas_Text_Cursor *cur_obj = efl_canvas_text_cursor_get(obj); - efl_canvas_text_cursor_position_set(obj, cur_obj, position); + Efl_Canvas_Text_Cursor *cur_obj = efl_text_cursor_get(obj); + efl_text_cursor_position_set(obj, cur_obj, position); efl_ui_text_selection_paste(obj); return EINA_TRUE; } @@ -4625,7 +4626,7 @@ EOLIAN static Efl_Canvas_Text_Cursor * _efl_ui_text_cursor_new(Eo *obj EINA_UNUSED, Efl_Ui_Text_Data *sd EINA_UNUSED) { Eo *text_obj = edje_object_part_swallow_get(sd->entry_edje, "elm.text"); - return efl_canvas_text_cursor_new(text_obj); + return efl_text_cursor_new(text_obj); } static void @@ -4706,9 +4707,9 @@ _update_text_cursors(Eo *obj) x = y = w = h = -1; xx = yy = ww = hh = -1; _decoration_calc_offset(sd, &x, &y); - bidi_cursor = efl_canvas_text_cursor_geometry_get(obj, - efl_canvas_text_cursor_get(text_obj), - EFL_CANVAS_TEXT_CURSOR_TYPE_BEFORE, &xx, &yy, &ww, &hh, &xx2, &yy2, + bidi_cursor = efl_text_cursor_geometry_get(obj, + efl_text_cursor_get(text_obj), + EFL_TEXT_CURSOR_TYPE_BEFORE, &xx, &yy, &ww, &hh, &xx2, &yy2, NULL, NULL); if (ww < 1) ww = 1; if (hh < 1) hh = 1; @@ -4987,16 +4988,16 @@ _anchors_create(Eo *obj, Efl_Ui_Text_Data *sd) Eo *text_obj = edje_object_part_swallow_get(sd->entry_edje, "elm.text"); _anchors_clear_all(obj, sd); - start = efl_canvas_text_cursor_new(text_obj); - end = efl_canvas_text_cursor_new(text_obj); + start = efl_text_cursor_new(text_obj); + end = efl_text_cursor_new(text_obj); /* Retrieve all annotations in the text. */ - efl_canvas_text_cursor_paragraph_first(obj, start); - efl_canvas_text_cursor_paragraph_last(obj, end); + efl_text_cursor_paragraph_first(obj, start); + efl_text_cursor_paragraph_last(obj, end); it = efl_canvas_text_range_annotations_get(obj, start, end); - efl_canvas_text_cursor_free(text_obj, start); - efl_canvas_text_cursor_free(text_obj, end); + efl_text_cursor_free(text_obj, start); + efl_text_cursor_free(text_obj, end); EINA_ITERATOR_FOREACH(it, anchor) { @@ -5138,8 +5139,8 @@ _anchors_update(Eo *o, Efl_Ui_Text_Data *sd) Eina_List *range_list; Eina_Rectangle *r; - start = efl_canvas_text_cursor_new(o); - end = efl_canvas_text_cursor_new(o); + start = efl_text_cursor_new(o); + end = efl_text_cursor_new(o); efl_canvas_text_annotation_positions_get(o, an->annotation, start, end); diff --git a/src/lib/elementary/efl_ui_text.eo b/src/lib/elementary/efl_ui_text.eo index 9cb8772862..f5b7ac6ad7 100644 --- a/src/lib/elementary/efl_ui_text.eo +++ b/src/lib/elementary/efl_ui_text.eo @@ -393,7 +393,7 @@ class Efl.Ui.Text (Elm.Layout, Elm.Interface_Scrollable, Efl.Ui.Clickable, } cursor_new { [[Creates and returns a new cursor for the text.]] - return: ptr(Efl.Canvas.Text.Cursor); [[Text cursor]] + return: ptr(Efl.Text.Cursor.Cursor_Data); [[Text cursor]] } } implements { diff --git a/src/lib/elementary/efl_ui_text_interactive.eo b/src/lib/elementary/efl_ui_text_interactive.eo index 07da8b5444..a77270b464 100644 --- a/src/lib/elementary/efl_ui_text_interactive.eo +++ b/src/lib/elementary/efl_ui_text_interactive.eo @@ -36,8 +36,8 @@ interface Efl.Ui.Text.Interactive (Efl.Text, Efl.Text.Font, ]] get {} values { - start: ptr(Efl.Canvas.Text.Cursor); [[The start of the selection]] - end: ptr(Efl.Canvas.Text.Cursor); [[The end of the selection]] + start: ptr(Efl.Text.Cursor.Cursor_Data); [[The start of the selection]] + end: ptr(Efl.Text.Cursor.Cursor_Data); [[The end of the selection]] } } @property editable { diff --git a/src/lib/evas/canvas/efl_canvas_text.eo b/src/lib/evas/canvas/efl_canvas_text.eo index 184dbba695..6f01268175 100644 --- a/src/lib/evas/canvas/efl_canvas_text.eo +++ b/src/lib/evas/canvas/efl_canvas_text.eo @@ -1,14 +1,9 @@ +import efl_text_types; + struct Efl.Canvas.Text.Style; [[EFL text style data structure]] -enum Efl.Canvas.Text.Cursor.Type -{ - [[Text cursor types]] - before, [[Cursor type before]] - under [[Cursor type under]] -} - class Efl.Canvas.Text (Efl.Canvas.Object, Efl.Text, Efl.Text.Properties, Efl.Canvas.Filter.Internal, -Efl.Text.Font, Efl.Text.Style, Efl.Text.Format) +Efl.Text.Font, Efl.Text.Style, Efl.Text.Format, Efl.Text.Cursor) { [[Efl canvas text class]] legacy_prefix: evas_object_textblock; @@ -36,8 +31,8 @@ Efl.Text.Font, Efl.Text.Style, Efl.Text.Format) ]] return: bool; [[$true on success, $false otherwise]] params { - @in start: ptr(Efl.Canvas.Text.Cursor); [[Range start position]] - @in end: ptr(Efl.Canvas.Text.Cursor); [[Range end position]] + @in start: ptr(Efl.Text.Cursor.Cursor_Data); [[Range start position]] + @in end: ptr(Efl.Text.Cursor.Cursor_Data); [[Range end position]] } } @property style_insets { @@ -166,8 +161,8 @@ Efl.Text.Font, Efl.Text.Style, Efl.Text.Format) legacy: null; return: own(ptr(char)); [[The text in the given range]] params { - @in cur1: const(ptr(Efl.Canvas.Text.Cursor)); [[Start of range]] - @in cur2: const(ptr(Efl.Canvas.Text.Cursor)); [[End of range]] + @in cur1: const(ptr(Efl.Text.Cursor.Cursor_Data)); [[Start of range]] + @in cur2: const(ptr(Efl.Text.Cursor.Cursor_Data)); [[End of range]] } } range_geometry_get { @@ -180,8 +175,8 @@ Efl.Text.Font, Efl.Text.Style, Efl.Text.Format) ]] legacy: null; params { - @in cur1: const(ptr(Efl.Canvas.Text.Cursor)); [[Start of range]] - @in cur2: const(ptr(Efl.Canvas.Text.Cursor)); [[End of range]] + @in cur1: const(ptr(Efl.Text.Cursor.Cursor_Data)); [[Start of range]] + @in cur2: const(ptr(Efl.Text.Cursor.Cursor_Data)); [[End of range]] } return: free(own(iterator), eina_iterator_free); [[Iterator on all geoemtries of @@ -198,8 +193,8 @@ Efl.Text.Font, Efl.Text.Style, Efl.Text.Format) ]] legacy: null; params { - @in cur1: ptr(const(Efl.Canvas.Text.Cursor)); [[Start of range]] - @in cur2: ptr(const(Efl.Canvas.Text.Cursor)); [[End of range]] + @in cur1: ptr(const(Efl.Text.Cursor.Cursor_Data)); [[Start of range]] + @in cur2: ptr(const(Efl.Text.Cursor.Cursor_Data)); [[End of range]] } return: free(own(iterator), eina_iterator_free); [[Iterator on all simple @@ -212,8 +207,8 @@ Efl.Text.Font, Efl.Text.Style, Efl.Text.Format) ]] legacy: null; params { - @in cur1: ptr(Efl.Canvas.Text.Cursor); [[Range start position]] - @in cur2: ptr(Efl.Canvas.Text.Cursor); [[Range end position]] + @in cur1: ptr(Efl.Text.Cursor.Cursor_Data); [[Range start position]] + @in cur2: ptr(Efl.Text.Cursor.Cursor_Data); [[Range end position]] } } // Obstacles @@ -289,8 +284,8 @@ Efl.Text.Font, Efl.Text.Style, Efl.Text.Format) ]] legacy: null; params { - @in start: ptr(const(Efl.Canvas.Text.Cursor)); [[Start of range]] - @in end: ptr(const(Efl.Canvas.Text.Cursor)); [[End of range]] + @in start: ptr(const(Efl.Text.Cursor.Cursor_Data)); [[Start of range]] + @in end: ptr(const(Efl.Text.Cursor.Cursor_Data)); [[End of range]] } return: free(own(iterator), eina_iterator_free); [[Handle of the Annotation]] @@ -305,8 +300,8 @@ Efl.Text.Font, Efl.Text.Style, Efl.Text.Format) ]] legacy: null; params { - @in start: ptr(Efl.Canvas.Text.Cursor); [[Start of range]] - @in end: ptr(Efl.Canvas.Text.Cursor); [[End of range]] + @in start: ptr(Efl.Text.Cursor.Cursor_Data); [[Start of range]] + @in end: ptr(Efl.Text.Cursor.Cursor_Data); [[End of range]] @in format: string; [[Annotation format]] } return: ptr(Efl.Canvas.Text.Annotation); [[Handle of inserted annotation]] @@ -355,72 +350,13 @@ Efl.Text.Font, Efl.Text.Style, Efl.Text.Format) params { @in annotation: ptr(const(Efl.Canvas.Text.Annotation)); [[Annotation handle to query]] - @in start: ptr(Efl.Canvas.Text.Cursor); [[Cursor to be set to the start + @in start: ptr(Efl.Text.Cursor.Cursor_Data); [[Cursor to be set to the start position of the annotation in the text]] - @in end: ptr(Efl.Canvas.Text.Cursor); [[Cursor to be set to the end + @in end: ptr(Efl.Text.Cursor.Cursor_Data); [[Cursor to be set to the end position of the annotation in the text]] } } // Cursor - @property cursor { - [[The object's main cursor. - - @since 1.18 - ]] - get { - return: ptr(Efl.Canvas.Text.Cursor); [[Text cursor object]] - } - } - @property cursor_position { - set { legacy: null; } - get { legacy: null; } - values { - position: int; - } - keys { - cur: ptr(Efl.Canvas.Text.Cursor); - } - } - @property cursor_content { - [[The content of the cursor (the character under the cursor)]] - get { - legacy: null; - } - values { - content: Eina.Unicode; [[The unicode codepoint of the character]] - } - keys { - cur: ptr(const(Efl.Canvas.Text.Cursor)); - } - } - @property cursor_geometry { - [[Returns the geometry of two cursors ("split cursor"), if logical cursor is - between LTR/RTL text, also considering paragraph direction. - Upper cursor is shown for the text of the same direction as paragraph, - lower cursor - for opposite. - - Split cursor geometry is valid only in '|' cursor mode. - In this case $true is returned and $cx2, $cy2, $cw2, $ch2 are set. - ]] - get { - legacy: null; - return: bool; [[ $true if split cursor, $false otherwise.]] - } - keys { - cur: ptr(const(Efl.Canvas.Text.Cursor)); - ctype: Efl.Canvas.Text.Cursor.Type; [[The type of the cursor.]] - } - values { - cx: int; [[The x of the cursor (or upper cursor)]] - cy: int; [[The y of the cursor (or upper cursor)]] - cw: int; [[The width of the cursor (or upper cursor)]] - ch: int; [[The height of the cursor (or upper cursor)]] - cx2: int; [[The x of the lower cursor]] - cy2: int; [[The y of the lower cursor]] - cw2: int; [[The width of the lower cursor]] - ch2: int; [[The height of the lower cursor]] - } - } @property cursor_object_item_annotation { [[The object-item annotation at the cursor's position.]] get { @@ -430,147 +366,7 @@ Efl.Text.Font, Efl.Text.Style, Efl.Text.Format) annotation: ptr(Efl.Canvas.Text.Annotation); [[Annotation]] } keys { - cur: ptr(Efl.Canvas.Text.Cursor); - } - } - cursor_new { - legacy: null; - return: ptr(Efl.Canvas.Text.Cursor); - } - cursor_free { - legacy: null; - params { - cur: ptr(Efl.Canvas.Text.Cursor); - } - } - cursor_equal { - legacy: null; - params { - cur1: ptr(const(Efl.Canvas.Text.Cursor)); - cur2: ptr(const(Efl.Canvas.Text.Cursor)); - } - return: bool; - } - cursor_compare { - legacy: null; - params { - cur1: ptr(const(Efl.Canvas.Text.Cursor)); - cur2: ptr(const(Efl.Canvas.Text.Cursor)); - } - return: int; - } - cursor_copy { - legacy: null; - params { - dst: ptr(Efl.Canvas.Text.Cursor); - src: ptr(const(Efl.Canvas.Text.Cursor)); - } - } - cursor_char_next { - legacy: null; - params { - cur: ptr(Efl.Canvas.Text.Cursor); - } - } - cursor_char_prev { - legacy: null; - params { - cur: ptr(Efl.Canvas.Text.Cursor); - } - } - cursor_paragraph_char_first { - legacy: null; - params { - cur: ptr(Efl.Canvas.Text.Cursor); - } - } - cursor_paragraph_char_last { - legacy: null; - params { - cur: ptr(Efl.Canvas.Text.Cursor); - } - } - cursor_word_start { - legacy: null; - params { - cur: ptr(Efl.Canvas.Text.Cursor); - } - } - cursor_word_end { - legacy: null; - params { - cur: ptr(Efl.Canvas.Text.Cursor); - } - } - cursor_line_char_first { - legacy: null; - params { - cur: ptr(Efl.Canvas.Text.Cursor); - } - } - cursor_line_char_last { - legacy: null; - params { - cur: ptr(Efl.Canvas.Text.Cursor); - } - } - cursor_paragraph_first { - legacy: null; - params { - cur: ptr(Efl.Canvas.Text.Cursor); - } - } - cursor_paragraph_last { - legacy: null; - params { - cur: ptr(Efl.Canvas.Text.Cursor); - } - } - cursor_paragraph_next { - [[Advances to the start of the next text node]] - legacy: null; - params { - cur: ptr(Efl.Canvas.Text.Cursor); - } - } - cursor_paragraph_prev { - [[Advances to the end of the previous text node]] - legacy: null; - params { - cur: ptr(Efl.Canvas.Text.Cursor); - } - } - cursor_line_jump_by { - legacy: null; - params { - cur: ptr(Efl.Canvas.Text.Cursor); - by: int; - } - } - cursor_coord_set { - legacy: null; - params { - cur: ptr(Efl.Canvas.Text.Cursor); - @in x: int; [[X coord to set by.]] - @in y: int; [[Y coord to set by.]] - } - } - cursor_text_insert { - [[Adds text to the current cursor position and set the cursor to - *after* the start of the text just added. - ]] - legacy: null; - params { - cur: ptr(Efl.Canvas.Text.Cursor); - @in text: string; [[Text to append (UTF-8 format).]] - } - return: int; [[Length of the appended text.]] - } - cursor_char_delete { - [[Deletes a single character from position pointed by given cursor.]] - legacy: null; - params { - cur: ptr(Efl.Canvas.Text.Cursor); + cur: ptr(Efl.Text.Cursor.Cursor_Data); } } cursor_object_item_insert { @@ -582,7 +378,7 @@ Efl.Text.Font, Efl.Text.Style, Efl.Text.Format) ]] legacy: null; params { - cur: ptr(Efl.Canvas.Text.Cursor); + cur: ptr(Efl.Text.Cursor.Cursor_Data); @in format: string; [[Format of the inserted item. See Format styles.]] } @@ -637,6 +433,31 @@ Efl.Text.Font, Efl.Text.Style, Efl.Text.Format) Efl.Text.Format.format_tabstops { get; set; } Efl.Text.Format.format_password { get; set; } Efl.Text.Format.format_replacement_char { get; set; } + Efl.Text.Cursor.cursor { get; } + Efl.Text.Cursor.cursor_position { set; get; } + Efl.Text.Cursor.cursor_content { get; } + Efl.Text.Cursor.cursor_geometry { get; } + Efl.Text.Cursor.cursor_new; + Efl.Text.Cursor.cursor_free; + Efl.Text.Cursor.cursor_equal; + Efl.Text.Cursor.cursor_compare; + Efl.Text.Cursor.cursor_copy; + Efl.Text.Cursor.cursor_char_next; + Efl.Text.Cursor.cursor_char_prev; + Efl.Text.Cursor.cursor_paragraph_char_first; + Efl.Text.Cursor.cursor_paragraph_char_last; + Efl.Text.Cursor.cursor_word_start; + Efl.Text.Cursor.cursor_word_end; + Efl.Text.Cursor.cursor_line_char_first; + Efl.Text.Cursor.cursor_line_char_last; + Efl.Text.Cursor.cursor_paragraph_first; + Efl.Text.Cursor.cursor_paragraph_last; + Efl.Text.Cursor.cursor_paragraph_next; + Efl.Text.Cursor.cursor_paragraph_prev; + Efl.Text.Cursor.cursor_line_jump_by; + Efl.Text.Cursor.cursor_coord_set; + Efl.Text.Cursor.cursor_text_insert; + Efl.Text.Cursor.cursor_char_delete; } events { cursor,changed; diff --git a/src/lib/evas/canvas/evas_object_textblock.c b/src/lib/evas/canvas/evas_object_textblock.c index 067fdc0f32..c518e4ce3d 100644 --- a/src/lib/evas/canvas/evas_object_textblock.c +++ b/src/lib/evas/canvas/evas_object_textblock.c @@ -551,7 +551,7 @@ struct _Efl_Canvas_Text_Style Eina_Bool delete_me : 1; }; -struct _Efl_Canvas_Text_Cursor +struct _Efl_Text_Cursor_Cursor_Data { Evas_Object *obj; size_t pos; @@ -559,8 +559,9 @@ struct _Efl_Canvas_Text_Cursor Eina_Bool changed : 1; }; -//typedef struct _Efl_Canvas_Text_Cursor Efl_Canvas_Text_Cursor_Data; -typedef struct _Efl_Canvas_Text_Cursor Efl_Canvas_Text_Cursor_Data; +typedef struct _Efl_Text_Cursor_Cursor_Data Efl_Canvas_Text_Cursor; +typedef struct _Efl_Text_Cursor_Cursor_Data Efl_Canvas_Text_Cursor_Data; +typedef struct _Efl_Text_Cursor_Cursor_Data Efl_Text_Cursor_Data; struct _Efl_Canvas_Text_Annotation { @@ -8350,7 +8351,7 @@ EAPI Efl_Canvas_Text_Cursor * evas_object_textblock_cursor_new(Eo *eo_obj) { EINA_SAFETY_ON_NULL_RETURN_VAL(eo_obj, NULL); - return efl_canvas_text_cursor_new(eo_obj); + return efl_text_cursor_new(eo_obj); } EAPI void @@ -8544,7 +8545,7 @@ evas_textblock_cursor_paragraph_first(Efl_Canvas_Text_Cursor *cur) } EOLIAN static void -_efl_canvas_text_cursor_paragraph_first(Eo *eo_obj, Efl_Canvas_Text_Data *o EINA_UNUSED, Efl_Canvas_Text_Cursor *cur) +_efl_canvas_text_efl_text_cursor_cursor_paragraph_first(Eo *eo_obj, Efl_Canvas_Text_Data *o EINA_UNUSED, Efl_Canvas_Text_Cursor *cur) { evas_textblock_cursor_paragraph_first(cur); efl_event_callback_legacy_call(eo_obj, EFL_CANVAS_TEXT_EVENT_CURSOR_CHANGED, NULL); @@ -8575,7 +8576,7 @@ evas_textblock_cursor_paragraph_last(Efl_Canvas_Text_Cursor *cur) } EOLIAN static void -_efl_canvas_text_cursor_paragraph_last(Eo *eo_obj, Efl_Canvas_Text_Data *o EINA_UNUSED, Efl_Canvas_Text_Cursor *cur) +_efl_canvas_text_efl_text_cursor_cursor_paragraph_last(Eo *eo_obj, Efl_Canvas_Text_Data *o EINA_UNUSED, Efl_Canvas_Text_Cursor *cur) { evas_textblock_cursor_paragraph_last(cur); efl_event_callback_legacy_call(eo_obj, EFL_CANVAS_TEXT_EVENT_CURSOR_CHANGED, NULL); @@ -8613,7 +8614,7 @@ evas_textblock_cursor_paragraph_next(Efl_Canvas_Text_Cursor *cur) } EOLIAN static void -_efl_canvas_text_cursor_paragraph_next(Eo *obj EINA_UNUSED, Efl_Canvas_Text_Data *o EINA_UNUSED, Evas_Textblock_Cursor *cur) +_efl_canvas_text_efl_text_cursor_cursor_paragraph_next(Eo *obj EINA_UNUSED, Efl_Canvas_Text_Data *o EINA_UNUSED, Evas_Textblock_Cursor *cur) { evas_textblock_cursor_paragraph_next(cur); efl_event_callback_legacy_call(obj, EFL_CANVAS_TEXT_EVENT_CURSOR_CHANGED, NULL); @@ -8656,7 +8657,7 @@ evas_textblock_cursor_paragraph_prev(Efl_Canvas_Text_Cursor_Data *cur) } EOLIAN static void -_efl_canvas_text_cursor_paragraph_prev(Eo *obj EINA_UNUSED, +_efl_canvas_text_efl_text_cursor_cursor_paragraph_prev(Eo *obj EINA_UNUSED, Efl_Canvas_Text_Data *o EINA_UNUSED, Efl_Canvas_Text_Cursor *cur) { _evas_textblock_cursor_paragraph_prev(cur); @@ -8811,7 +8812,7 @@ evas_textblock_cursor_word_start(Efl_Canvas_Text_Cursor *cur) } EOLIAN static void -_efl_canvas_text_cursor_word_start(Eo *eo_obj, Efl_Canvas_Text_Data *o EINA_UNUSED, Efl_Canvas_Text_Cursor *cur EINA_UNUSED) +_efl_canvas_text_efl_text_cursor_cursor_word_start(Eo *eo_obj, Efl_Canvas_Text_Data *o EINA_UNUSED, Efl_Canvas_Text_Cursor *cur EINA_UNUSED) { evas_textblock_cursor_word_start(cur); efl_event_callback_legacy_call(eo_obj, EFL_CANVAS_TEXT_EVENT_CURSOR_CHANGED, NULL); @@ -8872,7 +8873,7 @@ evas_textblock_cursor_word_end(Efl_Canvas_Text_Cursor *cur) } EOLIAN static void -_efl_canvas_text_cursor_word_end(Eo *eo_obj, Efl_Canvas_Text_Data *o EINA_UNUSED, Efl_Canvas_Text_Cursor *cur EINA_UNUSED) +_efl_canvas_text_efl_text_cursor_cursor_word_end(Eo *eo_obj, Efl_Canvas_Text_Data *o EINA_UNUSED, Efl_Canvas_Text_Cursor *cur EINA_UNUSED) { evas_textblock_cursor_word_end(cur); efl_event_callback_legacy_call(eo_obj, EFL_CANVAS_TEXT_EVENT_CURSOR_CHANGED, NULL); @@ -8919,7 +8920,7 @@ evas_textblock_cursor_char_next(Efl_Canvas_Text_Cursor_Data *cur) } EOLIAN static void -_efl_canvas_text_cursor_char_next(Eo *eo_obj, Efl_Canvas_Text_Data *o EINA_UNUSED, Efl_Canvas_Text_Cursor *cur) +_efl_canvas_text_efl_text_cursor_cursor_char_next(Eo *eo_obj, Efl_Canvas_Text_Data *o EINA_UNUSED, Efl_Canvas_Text_Cursor *cur) { evas_textblock_cursor_char_next(cur); efl_event_callback_legacy_call(eo_obj, EFL_CANVAS_TEXT_EVENT_CURSOR_CHANGED, NULL); @@ -8948,7 +8949,7 @@ evas_textblock_cursor_char_prev(Efl_Canvas_Text_Cursor *cur) } EOLIAN static void -_efl_canvas_text_cursor_char_prev(Eo *eo_obj EINA_UNUSED, Efl_Canvas_Text_Data *o EINA_UNUSED, Efl_Canvas_Text_Cursor *cur) +_efl_canvas_text_efl_text_cursor_cursor_char_prev(Eo *eo_obj EINA_UNUSED, Efl_Canvas_Text_Data *o EINA_UNUSED, Efl_Canvas_Text_Cursor *cur) { _evas_textblock_cursor_char_prev(cur); efl_event_callback_legacy_call(eo_obj, EFL_CANVAS_TEXT_EVENT_CURSOR_CHANGED, NULL); @@ -8964,7 +8965,7 @@ evas_textblock_cursor_paragraph_char_first(Efl_Canvas_Text_Cursor_Data *cur) } EOLIAN static void -_efl_canvas_text_cursor_paragraph_char_first(Eo *eo_obj, Efl_Canvas_Text_Data *o EINA_UNUSED, Efl_Canvas_Text_Cursor *cur) +_efl_canvas_text_efl_text_cursor_cursor_paragraph_char_first(Eo *eo_obj, Efl_Canvas_Text_Data *o EINA_UNUSED, Efl_Canvas_Text_Cursor *cur) { evas_textblock_cursor_paragraph_char_first(cur); efl_event_callback_legacy_call(eo_obj, EFL_CANVAS_TEXT_EVENT_CURSOR_CHANGED, NULL); @@ -8992,7 +8993,7 @@ evas_textblock_cursor_paragraph_char_last(Efl_Canvas_Text_Cursor_Data *cur) } EOLIAN static void -_efl_canvas_text_cursor_paragraph_char_last(Eo *eo_obj, Efl_Canvas_Text_Data *o EINA_UNUSED, Efl_Canvas_Text_Cursor *cur) +_efl_canvas_text_efl_text_cursor_cursor_paragraph_char_last(Eo *eo_obj, Efl_Canvas_Text_Data *o EINA_UNUSED, Efl_Canvas_Text_Cursor *cur) { evas_textblock_cursor_paragraph_char_last(cur); efl_event_callback_legacy_call(eo_obj, EFL_CANVAS_TEXT_EVENT_CURSOR_CHANGED, NULL); @@ -9097,14 +9098,14 @@ evas_textblock_cursor_line_char_last(Efl_Canvas_Text_Cursor_Data *cur) } EOLIAN static void -_efl_canvas_text_cursor_line_char_last(Eo *eo_obj, Efl_Canvas_Text_Data *o EINA_UNUSED, Efl_Canvas_Text_Cursor *cur) +_efl_canvas_text_efl_text_cursor_cursor_line_char_last(Eo *eo_obj, Efl_Canvas_Text_Data *o EINA_UNUSED, Efl_Canvas_Text_Cursor *cur) { evas_textblock_cursor_line_char_last(cur); efl_event_callback_legacy_call(eo_obj, EFL_CANVAS_TEXT_EVENT_CURSOR_CHANGED, NULL); } EOLIAN static void -_efl_canvas_text_cursor_line_char_first(Eo *eo_obj, Efl_Canvas_Text_Data *o EINA_UNUSED, Efl_Canvas_Text_Cursor *cur) +_efl_canvas_text_efl_text_cursor_cursor_line_char_first(Eo *eo_obj, Efl_Canvas_Text_Data *o EINA_UNUSED, Efl_Canvas_Text_Cursor *cur) { evas_textblock_cursor_line_char_first(cur); efl_event_callback_legacy_call(eo_obj, EFL_CANVAS_TEXT_EVENT_CURSOR_CHANGED, NULL); @@ -9550,7 +9551,7 @@ _evas_textblock_node_format_pos_get(const Evas_Object_Textblock_Node_Format *fmt } EOLIAN static int -_efl_canvas_text_cursor_position_get(Eo *eo_obj EINA_UNUSED, Efl_Canvas_Text_Data *o EINA_UNUSED, Efl_Canvas_Text_Cursor *cur) +_efl_canvas_text_efl_text_cursor_cursor_position_get(Eo *eo_obj EINA_UNUSED, Efl_Canvas_Text_Data *o EINA_UNUSED, Efl_Canvas_Text_Cursor *cur) { Evas_Object_Textblock_Node_Text *n; size_t npos = 0; @@ -9573,7 +9574,7 @@ EAPI int evas_textblock_cursor_pos_get(const Efl_Canvas_Text_Cursor *cur) { if (!cur) return -1; - return efl_canvas_text_cursor_position_get(cur->obj, + return efl_text_cursor_position_get(cur->obj, (Efl_Canvas_Text_Cursor *) cur); } @@ -9624,7 +9625,7 @@ evas_textblock_cursor_pos_set(Efl_Canvas_Text_Cursor_Data *cur, int _pos) } EOLIAN static void -_efl_canvas_text_cursor_position_set(Eo *cur_obj, Efl_Canvas_Text_Data *o EINA_UNUSED, Efl_Canvas_Text_Cursor *cur, int _pos) +_efl_canvas_text_efl_text_cursor_cursor_position_set(Eo *cur_obj, Efl_Canvas_Text_Data *o EINA_UNUSED, Efl_Canvas_Text_Cursor *cur, int _pos) { evas_textblock_cursor_pos_set(cur, _pos); efl_event_callback_legacy_call(cur_obj, EFL_CANVAS_TEXT_EVENT_CURSOR_CHANGED, NULL); @@ -9652,7 +9653,7 @@ evas_textblock_cursor_line_set(Evas_Textblock_Cursor *cur, int line) } EOLIAN static void -_efl_canvas_text_cursor_line_jump_by(Eo *eo_obj EINA_UNUSED, Efl_Canvas_Text_Data *o EINA_UNUSED, Efl_Canvas_Text_Cursor *cur EINA_UNUSED, int by) +_efl_canvas_text_efl_text_cursor_cursor_line_jump_by(Eo *eo_obj EINA_UNUSED, Efl_Canvas_Text_Data *o EINA_UNUSED, Efl_Canvas_Text_Cursor *cur EINA_UNUSED, int by) { int ln; @@ -9728,7 +9729,7 @@ evas_textblock_cursor_compare(const Efl_Canvas_Text_Cursor_Data *cur1, } EOLIAN static int -_efl_canvas_text_cursor_compare(Eo *eo_obj EINA_UNUSED, Efl_Canvas_Text_Data *o EINA_UNUSED, +_efl_canvas_text_efl_text_cursor_cursor_compare(Eo *eo_obj EINA_UNUSED, Efl_Canvas_Text_Data *o EINA_UNUSED, const Efl_Canvas_Text_Cursor *cur1, const Efl_Canvas_Text_Cursor *cur2) { Evas_Object_Protected_Data *obj = efl_data_scope_get(cur1->obj, EFL_CANVAS_OBJECT_CLASS); @@ -9737,7 +9738,7 @@ _efl_canvas_text_cursor_compare(Eo *eo_obj EINA_UNUSED, Efl_Canvas_Text_Data *o } EOLIAN static Eina_Bool -_efl_canvas_text_cursor_equal(Eo *eo_obj EINA_UNUSED, Efl_Canvas_Text_Data *o EINA_UNUSED, const Efl_Canvas_Text_Cursor *cur, const Efl_Canvas_Text_Cursor *cur2) +_efl_canvas_text_efl_text_cursor_cursor_equal(Eo *eo_obj EINA_UNUSED, Efl_Canvas_Text_Data *o EINA_UNUSED, const Efl_Canvas_Text_Cursor *cur, const Efl_Canvas_Text_Cursor *cur2) { Evas_Object_Protected_Data *obj = efl_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS); evas_object_async_block(obj); @@ -9748,7 +9749,7 @@ EAPI void evas_textblock_cursor_copy(const Evas_Textblock_Cursor *cur_src, Efl_Canvas_Text_Cursor *cur_dest) { if (!cur_src || !cur_dest) return; - efl_canvas_text_cursor_copy(cur_src->obj, cur_dest, cur_src); + efl_text_cursor_copy(cur_src->obj, cur_dest, cur_src); } static void @@ -9766,10 +9767,10 @@ _evas_textblock_cursor_copy(Evas_Textblock_Cursor *dst, const Efl_Canvas_Text_Cu } static EOLIAN void -_efl_canvas_text_cursor_copy(Eo *obj EINA_UNUSED, Efl_Canvas_Text_Data *o EINA_UNUSED, +_efl_canvas_text_efl_text_cursor_cursor_copy(Eo *obj EINA_UNUSED, Efl_Canvas_Text_Data *o EINA_UNUSED, Efl_Canvas_Text_Cursor *dst, const Efl_Canvas_Text_Cursor *src) { - if (!efl_canvas_text_cursor_equal(obj, dst, src)) + if (!efl_text_cursor_equal(obj, dst, src)) { _evas_textblock_cursor_copy(dst, src); efl_event_callback_legacy_call(obj, EFL_CANVAS_TEXT_EVENT_CURSOR_CHANGED, NULL); @@ -10143,7 +10144,7 @@ evas_textblock_cursor_text_prepend(Efl_Canvas_Text_Cursor *cur, const char *_tex } EOLIAN static int -_efl_canvas_text_cursor_text_insert(Eo *eo_obj, +_efl_canvas_text_efl_text_cursor_cursor_text_insert(Eo *eo_obj, Efl_Canvas_Text_Data *o EINA_UNUSED, Efl_Canvas_Text_Cursor *cur, const char *_text) { @@ -10570,7 +10571,7 @@ evas_textblock_cursor_char_delete(Efl_Canvas_Text_Cursor_Data *cur) } EOLIAN static void -_efl_canvas_text_cursor_char_delete(Eo *eo_obj, Efl_Canvas_Text_Data *o EINA_UNUSED, Efl_Canvas_Text_Cursor *cur) +_efl_canvas_text_efl_text_cursor_cursor_char_delete(Eo *eo_obj, Efl_Canvas_Text_Data *o EINA_UNUSED, Efl_Canvas_Text_Cursor *cur) { evas_textblock_cursor_char_delete(cur); efl_event_callback_legacy_call(eo_obj, EFL_CANVAS_TEXT_EVENT_CURSOR_CHANGED, NULL); @@ -10690,7 +10691,7 @@ _efl_canvas_text_range_delete(Eo *eo_obj EINA_UNUSED, Efl_Canvas_Text_Data *pd E } EOLIAN static Eina_Unicode -_efl_canvas_text_cursor_content_get(Eo *obj EINA_UNUSED, Efl_Canvas_Text_Data *pd EINA_UNUSED, +_efl_canvas_text_efl_text_cursor_cursor_content_get(Eo *obj EINA_UNUSED, Efl_Canvas_Text_Data *pd EINA_UNUSED, const Efl_Canvas_Text_Cursor *cur) { return eina_ustrbuf_string_get(cur->node->unicode)[cur->pos]; @@ -10722,7 +10723,7 @@ evas_textblock_cursor_content_get(const Evas_Textblock_Cursor *cur) Eina_Unicode buf[2]; char *s; - buf[0] = efl_canvas_text_cursor_content_get(cur->obj, cur); + buf[0] = efl_text_cursor_content_get(cur->obj, cur); buf[1] = 0; s = eina_unicode_unicode_to_utf8(buf, NULL); @@ -11151,14 +11152,14 @@ EAPI Eina_Bool evas_textblock_cursor_geometry_bidi_get(const Efl_Canvas_Text_Cursor *cur, Evas_Coord *cx, Evas_Coord *cy, Evas_Coord *cw, Evas_Coord *ch, Evas_Coord *cx2, Evas_Coord *cy2, Evas_Coord *cw2, Evas_Coord *ch2, Evas_Textblock_Cursor_Type ctype) { if (!cur) return EINA_FALSE; - return efl_canvas_text_cursor_geometry_get(cur->obj, cur, + return efl_text_cursor_geometry_get(cur->obj, cur, (ctype == EVAS_TEXTBLOCK_CURSOR_BEFORE) ? - EFL_CANVAS_TEXT_CURSOR_TYPE_BEFORE : EFL_CANVAS_TEXT_CURSOR_TYPE_UNDER, + EFL_TEXT_CURSOR_TYPE_BEFORE : EFL_TEXT_CURSOR_TYPE_UNDER, cx, cy, cw, ch, cx2, cy2, cw2, ch2); } EOLIAN static Eina_Bool -_efl_canvas_text_cursor_geometry_get(Eo *eo_obj EINA_UNUSED, Efl_Canvas_Text_Data *o EINA_UNUSED, const Efl_Canvas_Text_Cursor *cur, Efl_Canvas_Text_Cursor_Type ctype, Evas_Coord *cx, Evas_Coord *cy, Evas_Coord *cw, Evas_Coord *ch, Evas_Coord *cx2, Evas_Coord *cy2, Evas_Coord *cw2, Evas_Coord *ch2) +_efl_canvas_text_efl_text_cursor_cursor_geometry_get(Eo *eo_obj EINA_UNUSED, Efl_Canvas_Text_Data *o EINA_UNUSED, const Efl_Canvas_Text_Cursor *cur, Efl_Text_Cursor_Cursor_Type ctype, Evas_Coord *cx, Evas_Coord *cy, Evas_Coord *cw, Evas_Coord *ch, Evas_Coord *cx2, Evas_Coord *cy2, Evas_Coord *cw2, Evas_Coord *ch2) { if (!cur) return EINA_FALSE; Evas_Object_Protected_Data *obj = efl_data_scope_get(cur->obj, EFL_CANVAS_OBJECT_CLASS); @@ -11166,7 +11167,7 @@ _efl_canvas_text_cursor_geometry_get(Eo *eo_obj EINA_UNUSED, Efl_Canvas_Text_Dat _relayout_if_needed(cur->obj, o); - if (ctype == EFL_CANVAS_TEXT_CURSOR_TYPE_UNDER) + if (ctype == EFL_TEXT_CURSOR_TYPE_UNDER) { evas_textblock_cursor_pen_geometry_get(cur, cx, cy, cw, ch); return EINA_FALSE; @@ -11336,7 +11337,7 @@ _efl_canvas_text_cursor_geometry_get(Eo *eo_obj EINA_UNUSED, Efl_Canvas_Text_Dat (void) ch2; #endif evas_textblock_cursor_geometry_get(cur, cx, cy, cw, ch, NULL, - (ctype == EFL_CANVAS_TEXT_CURSOR_TYPE_BEFORE) ? + (ctype == EFL_TEXT_CURSOR_TYPE_BEFORE) ? EVAS_TEXTBLOCK_CURSOR_BEFORE : EVAS_TEXTBLOCK_CURSOR_UNDER); return EINA_FALSE; } @@ -11749,7 +11750,7 @@ end: } EOLIAN static void -_efl_canvas_text_cursor_coord_set(Eo *eo_obj EINA_UNUSED, Efl_Canvas_Text_Data *o EINA_UNUSED, Efl_Canvas_Text_Cursor *cur EINA_UNUSED, +_efl_canvas_text_efl_text_cursor_cursor_coord_set(Eo *eo_obj EINA_UNUSED, Efl_Canvas_Text_Data *o EINA_UNUSED, Efl_Canvas_Text_Cursor *cur EINA_UNUSED, Evas_Coord x, Evas_Coord y) { evas_textblock_cursor_char_coord_set(cur, x, y); @@ -14376,7 +14377,7 @@ _efl_canvas_text_efl_text_text_set(Eo *eo_obj, Efl_Canvas_Text_Data *o EINA_UNUS const char *text) { evas_object_textblock_text_markup_set(eo_obj, ""); - efl_canvas_text_cursor_text_insert(eo_obj, o->cursor, text); + efl_text_cursor_text_insert(eo_obj, o->cursor, text); printf("canvas_text: eo_obj=%p\n", eo_obj); efl_event_callback_call(eo_obj, EFL_CANVAS_TEXT_EVENT_CHANGED, NULL); } @@ -15547,13 +15548,19 @@ ppar(Evas_Object_Textblock_Paragraph *par) EFL_OBJECT_OP_FUNC(efl_dbg_info_get, _efl_canvas_text_efl_object_dbg_info_get) EOLIAN static Efl_Canvas_Text_Cursor * -_efl_canvas_text_cursor_get(Eo *eo_obj EINA_UNUSED, Efl_Canvas_Text_Data *o) +_efl_canvas_text_efl_text_cursor_cursor_get(Eo *eo_obj EINA_UNUSED, Efl_Canvas_Text_Data *o) { return o->cursor; } +EAPI Efl_Canvas_Text_Cursor * +evas_object_textblock_cursor_get(Eo *eo_obj EINA_UNUSED) +{ + return efl_text_cursor_get(eo_obj); +} + EOLIAN static Efl_Canvas_Text_Cursor * -_efl_canvas_text_cursor_new(Eo *eo_obj EINA_UNUSED, Efl_Canvas_Text_Data *o) +_efl_canvas_text_efl_text_cursor_cursor_new(Eo *eo_obj EINA_UNUSED, Efl_Canvas_Text_Data *o) { Efl_Canvas_Text_Cursor *cur; Evas_Object_Protected_Data *obj = efl_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS); @@ -15568,10 +15575,11 @@ _efl_canvas_text_cursor_new(Eo *eo_obj EINA_UNUSED, Efl_Canvas_Text_Data *o) } EOLIAN static void -_efl_canvas_text_cursor_free(Eo *eo_obj EINA_UNUSED, Efl_Canvas_Text_Data *o EINA_UNUSED, +_efl_canvas_text_efl_text_cursor_cursor_free(Eo *eo_obj EINA_UNUSED, Efl_Canvas_Text_Data *o EINA_UNUSED, Efl_Canvas_Text_Cursor *cur) { evas_textblock_cursor_free(cur); } #include "canvas/efl_canvas_text.eo.c" +#include "efl/interfaces/efl_text_cursor.eo.c" diff --git a/src/lib/evas/canvas/evas_textblock_legacy.h b/src/lib/evas/canvas/evas_textblock_legacy.h index 62650aa52b..770b317146 100644 --- a/src/lib/evas/canvas/evas_textblock_legacy.h +++ b/src/lib/evas/canvas/evas_textblock_legacy.h @@ -146,7 +146,8 @@ typedef struct _Efl_Canvas_Text_Style Evas_Textblock_Style; * @see evas_object_textblock_cursor_new * */ -typedef struct _Efl_Canvas_Text_Cursor Evas_Textblock_Cursor; +typedef struct _Efl_Text_Cursor_Cursor_Data Evas_Textblock_Cursor; +typedef struct _Efl_Text_Cursor_Cursor_Data Efl_Canvas_Text_Cursor; /** * @typedef Evas_Object_Textblock_Node_Format @@ -925,6 +926,8 @@ EAPI void evas_textblock_cursor_paragraph_char_first(Efl_Canvas_Text_Cursor *cur EAPI void evas_textblock_cursor_paragraph_char_last(Efl_Canvas_Text_Cursor *cur); EAPI void evas_textblock_cursor_char_delete(Efl_Canvas_Text_Cursor *cur); + +EAPI Efl_Canvas_Text_Cursor *evas_object_textblock_cursor_get(Evas_Object *obj); //#include "canvas/efl_canvas_text_cursor.eo.legacy.h" #include "canvas/efl_canvas_text.eo.legacy.h" /**