Text cursor: add interface and implement in Canvas.Text
authorDaniel Hirt <hirt.danny@gmail.com>
Thu, 8 Jun 2017 10:07:12 +0000 (13:07 +0300)
committerDaniel Hirt <hirt.danny@gmail.com>
Sun, 11 Jun 2017 20:58:52 +0000 (23:58 +0300)
13 files changed:
src/Makefile_Efl.am
src/bin/elementary/test_efl_ui_text.c
src/lib/efl/Efl.h
src/lib/efl/interfaces/efl_interfaces_main.c
src/lib/efl/interfaces/efl_text_cursor.eo [new file with mode: 0644]
src/lib/efl/interfaces/efl_text_types.eot
src/lib/elementary/efl_ui_internal_text_interactive.c
src/lib/elementary/efl_ui_text.c
src/lib/elementary/efl_ui_text.eo
src/lib/elementary/efl_ui_text_interactive.eo
src/lib/evas/canvas/efl_canvas_text.eo
src/lib/evas/canvas/evas_object_textblock.c
src/lib/evas/canvas/evas_textblock_legacy.h

index 6fda23e..4c65a79 100644 (file)
@@ -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 \
index 2a438d5..bfcb4cd 100644 (file)
@@ -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");
 
index 01f72df..eb06539 100644 (file)
@@ -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
 
index a001cee..0b977a5 100644 (file)
@@ -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 (file)
index 0000000..c2aeb3b
--- /dev/null
@@ -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);
+         }
+      }
+   }
+}
index 0b12c47..739e42c 100644 (file)
@@ -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]]
+}
+
index e996c23..8353a82 100644 (file)
@@ -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);
index 235f6f9..7d1bc9a 100644 (file)
@@ -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);
 
index 9cb8772..f5b7ac6 100644 (file)
@@ -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 {
index 07da8b5..a77270b 100644 (file)
@@ -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 {
index 184dbba..6f01268 100644 (file)
@@ -1,14 +1,9 @@
-struct Efl.Canvas.Text.Style; [[EFL text style data structure]]
+import efl_text_types;
 
-enum Efl.Canvas.Text.Cursor.Type
-{
-   [[Text cursor types]]
-   before, [[Cursor type before]]
-   under [[Cursor type under]]
-}
+struct Efl.Canvas.Text.Style; [[EFL text style data structure]]
 
 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.Rectangle>),
                          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.Rectangle>),
                          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<ptr(Efl.Canvas.Text.Annotation)>),
                  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;
index 067fdc0..c518e4c 100644 (file)
@@ -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"
index 62650aa..770b317 100644 (file)
@@ -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"
 /**