Text cursor: add interface and implement in Canvas.Text

This commit is contained in:
Daniel Hirt 2017-06-08 13:07:12 +03:00
parent 97eda67737
commit 30f74a759d
13 changed files with 432 additions and 374 deletions

View 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 \

View 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");

View 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

View 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"

View File

@ -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);
}
}
}
}

View 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]]
}

View 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);

View 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);

View 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 {

View 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 {

View File

@ -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.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;

View 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"

View 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"
/**