diff options
author | Daniel Hirt <hirt.danny@gmail.com> | 2017-06-11 15:25:25 +0300 |
---|---|---|
committer | Daniel Hirt <hirt.danny@gmail.com> | 2017-06-11 15:25:25 +0300 |
commit | 8204bbf5292c9a669f02f7c1ff1b4ceef93d2611 (patch) | |
tree | b0215c4ff274cd73d32bd4bc62b99873254900df | |
parent | 09737f8a4a2d7a4534427399c92c555dbc4b788f (diff) | |
download | efl-8204bbf5292c9a669f02f7c1ff1b4ceef93d2611.tar.gz |
edje part text: add cursor_content_get
-rw-r--r-- | src/lib/edje/Edje_Legacy.h | 16 | ||||
-rw-r--r-- | src/lib/edje/edje_entry.c | 8 | ||||
-rw-r--r-- | src/lib/edje/edje_legacy.c | 18 | ||||
-rw-r--r-- | src/lib/edje/edje_object.eo | 13 | ||||
-rw-r--r-- | src/lib/edje/edje_part_text.c | 21 | ||||
-rw-r--r-- | src/lib/edje/edje_private.h | 1 | ||||
-rw-r--r-- | src/lib/edje/edje_util.c | 16 | ||||
-rw-r--r-- | src/lib/edje/efl_canvas_layout_internal_text.eo | 1 |
8 files changed, 64 insertions, 30 deletions
diff --git a/src/lib/edje/Edje_Legacy.h b/src/lib/edje/Edje_Legacy.h index fbac078a17..a0d1b0f27a 100644 --- a/src/lib/edje/Edje_Legacy.h +++ b/src/lib/edje/Edje_Legacy.h @@ -1524,6 +1524,22 @@ EAPI Eina_Bool edje_object_part_text_cursor_down(Edje_Object *obj, const char *p EAPI void edje_object_part_text_cursor_copy(Edje_Object *obj, const char *part, Edje_Cursor src, Edje_Cursor dst); /** + * @brief Returns the content (char) at the cursor position. @ref + * evas_textblock_cursor_content_get + * + * You must free the return (if not @c null) after you are done with it. + * + * @param[in] part The part name + * @param[in] cur The cursor to use + * + * @return The character string pointed to (may be a multi-byte utf8 sequence) + * terminated by a null byte. + * + * @ingroup Edje_Object + */ +EAPI char *edje_object_part_text_cursor_content_get(const Edje_Object *obj, const char * part, Edje_Cursor cur); + +/** * @} */ #include "edje_object.eo.legacy.h" diff --git a/src/lib/edje/edje_entry.c b/src/lib/edje/edje_entry.c index c11155c71a..7a28d25288 100644 --- a/src/lib/edje/edje_entry.c +++ b/src/lib/edje/edje_entry.c @@ -4367,13 +4367,19 @@ _edje_entry_cursor_is_visible_format_get(Edje_Real_Part *rp, Edje_Cursor cur) } char * +_edje_text_cursor_content_get(Edje_Real_Part *rp EINA_UNUSED, Efl_Text_Cursor_Cursor_Data *c) +{ + return evas_textblock_cursor_content_get(c); +} + +char * _edje_entry_cursor_content_get(Edje_Real_Part *rp, Edje_Cursor cur) { Evas_Textblock_Cursor *c = _cursor_get(rp, cur); if (!c) return NULL; - return evas_textblock_cursor_content_get(c); + return _edje_text_cursor_content_get(rp, c); } void diff --git a/src/lib/edje/edje_legacy.c b/src/lib/edje/edje_legacy.c index 6a96cdceed..e48d668fee 100644 --- a/src/lib/edje/edje_legacy.c +++ b/src/lib/edje/edje_legacy.c @@ -286,3 +286,21 @@ edje_object_part_text_cursor_copy(Edje_Object *obj, const char *part, Edje_Curso efl_text_cursor_get(efl_part(obj, part), (int) cur) ); } + +EAPI char * +edje_object_part_text_cursor_content_get(const Edje_Object *obj, const char *part, Edje_Cursor cur) +{ + Edje_Real_Part *rp; + Edje *ed; + + ed = efl_data_scope_get(obj, EDJE_OBJECT_CLASS); + if ((!ed) || (!part)) return NULL; + rp = _edje_real_part_recursive_get(&ed, part); + if (!rp) return NULL; + if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) + { + return _edje_entry_cursor_content_get(rp, cur); + } + + return NULL; +} diff --git a/src/lib/edje/edje_object.eo b/src/lib/edje/edje_object.eo index ebce0bfac2..90c6cf2239 100644 --- a/src/lib/edje/edje_object.eo +++ b/src/lib/edje/edje_object.eo @@ -922,19 +922,6 @@ class Edje.Object (Efl.Canvas.Group.Clipped, Efl.File, Efl.Container, Efl.Part, h: int; [[Cursor height]] } } - @property part_text_cursor_content { - get { - [[Returns the content (char) at the cursor position. - \@ref evas_textblock_cursor_content_get - - You must free the return (if not $null) after you are done with it.]] - return: own(ptr(char)); [[The character string pointed to (may be a multi-byte utf8 sequence) terminated by a null byte.]] - } - keys { - part: string; [[The part name]] - cur: Edje.Cursor; [[The cursor to use]] - } - } @property part_text_cursor_is_format { get { [[Returns whether the cursor points to a format. diff --git a/src/lib/edje/edje_part_text.c b/src/lib/edje/edje_part_text.c index 2cf9206ef2..abf9486ff3 100644 --- a/src/lib/edje/edje_part_text.c +++ b/src/lib/edje/edje_part_text.c @@ -138,5 +138,26 @@ _efl_canvas_layout_internal_text_efl_text_cursor_cursor_copy(Eo *obj, RETURN_VOID; } +EOLIAN static Eina_Unicode +_efl_canvas_layout_internal_text_efl_text_cursor_cursor_content_get(Eo *obj, + void *_pd EINA_UNUSED, + const Efl_Text_Cursor_Cursor_Data *cur) +{ + Eina_Unicode *ustr; + Eina_Unicode uc; + char *c; + int len; + + PROXY_DATA_GET(obj, pd); + c = _edje_text_cursor_content_get(pd->rp, (Efl_Text_Cursor_Cursor_Data *) cur); + ustr = eina_unicode_utf8_to_unicode(c, &len); + free(c); + if (ustr) + { + uc = *ustr; + free(ustr); + } + RETURN_VAL(uc); +} #include "efl_canvas_layout_internal_text.eo.c" diff --git a/src/lib/edje/edje_private.h b/src/lib/edje/edje_private.h index b241eafae5..f4c711f70f 100644 --- a/src/lib/edje/edje_private.h +++ b/src/lib/edje/edje_private.h @@ -3161,6 +3161,7 @@ Eina_Bool _edje_text_cursor_prev(Edje_Real_Part *rp, Efl_Text_Cursor_Cursor_Data Eina_Bool _edje_text_cursor_up(Edje_Real_Part *rp, Efl_Text_Cursor_Cursor_Data *cur); Eina_Bool _edje_text_cursor_down(Edje_Real_Part *rp, Efl_Text_Cursor_Cursor_Data *cur); void _edje_text_cursor_copy(Edje_Real_Part *rp, Efl_Text_Cursor_Cursor_Data *dst, Efl_Text_Cursor_Cursor_Data *cur); +char * _edje_text_cursor_content_get(Edje_Real_Part *rp, Efl_Text_Cursor_Cursor_Data *cur); void _edje_internal_proxy_shutdown(void); diff --git a/src/lib/edje/edje_util.c b/src/lib/edje/edje_util.c index 3c273dc770..aca74f8616 100644 --- a/src/lib/edje/edje_util.c +++ b/src/lib/edje/edje_util.c @@ -2735,22 +2735,6 @@ _edje_object_part_text_cursor_is_visible_format_get(Eo *obj EINA_UNUSED, Edje *e return EINA_FALSE; } -EOLIAN char * -_edje_object_part_text_cursor_content_get(Eo *obj EINA_UNUSED, Edje *ed, const char *part, Edje_Cursor cur) -{ - Edje_Real_Part *rp; - - if ((!ed) || (!part)) return NULL; - rp = _edje_real_part_recursive_get(&ed, part); - if (!rp) return NULL; - if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) - { - return _edje_entry_cursor_content_get(rp, cur); - } - - return NULL; -} - EOLIAN void _edje_object_part_text_cursor_pos_set(Eo *obj EINA_UNUSED, Edje *ed, const char *part, Edje_Cursor cur, int pos) { diff --git a/src/lib/edje/efl_canvas_layout_internal_text.eo b/src/lib/edje/efl_canvas_layout_internal_text.eo index caed7a30ea..56cd3f0620 100644 --- a/src/lib/edje/efl_canvas_layout_internal_text.eo +++ b/src/lib/edje/efl_canvas_layout_internal_text.eo @@ -20,5 +20,6 @@ class Efl.Canvas.Layout_Internal.Text (Efl.Canvas.Layout_Internal, Efl.Text, Efl.Text.Cursor.cursor_char_prev; Efl.Text.Cursor.cursor_line_jump_by; Efl.Text.Cursor.cursor_copy; + Efl.Text.Cursor.cursor_content { get; } } } |