summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Hirt <hirt.danny@gmail.com>2017-06-11 15:25:25 +0300
committerDaniel Hirt <hirt.danny@gmail.com>2017-06-11 15:25:25 +0300
commit8204bbf5292c9a669f02f7c1ff1b4ceef93d2611 (patch)
treeb0215c4ff274cd73d32bd4bc62b99873254900df
parent09737f8a4a2d7a4534427399c92c555dbc4b788f (diff)
downloadefl-8204bbf5292c9a669f02f7c1ff1b4ceef93d2611.tar.gz
edje part text: add cursor_content_get
-rw-r--r--src/lib/edje/Edje_Legacy.h16
-rw-r--r--src/lib/edje/edje_entry.c8
-rw-r--r--src/lib/edje/edje_legacy.c18
-rw-r--r--src/lib/edje/edje_object.eo13
-rw-r--r--src/lib/edje/edje_part_text.c21
-rw-r--r--src/lib/edje/edje_private.h1
-rw-r--r--src/lib/edje/edje_util.c16
-rw-r--r--src/lib/edje/efl_canvas_layout_internal_text.eo1
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; }
}
}