summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Hirt <hirt.danny@gmail.com>2017-06-11 12:26:13 +0300
committerDaniel Hirt <hirt.danny@gmail.com>2017-06-11 12:26:13 +0300
commitf1a15cb5c5516dc40334e53f77aef77c9fe96987 (patch)
tree3a360be822ce1b70aeb53ca456f7f224ee1e4e22
parent2ce4b6ef9200b08f312c2673b40dd35cb6d5fb3a (diff)
downloadefl-f1a15cb5c5516dc40334e53f77aef77c9fe96987.tar.gz
edje part cursor: add position
-rw-r--r--src/lib/edje/Edje_Legacy.h38
-rw-r--r--src/lib/edje/edje_entry.c33
-rw-r--r--src/lib/edje/edje_legacy.c22
-rw-r--r--src/lib/edje/edje_object.eo29
-rw-r--r--src/lib/edje/edje_part_text.c27
-rw-r--r--src/lib/edje/edje_private.h4
-rw-r--r--src/lib/edje/efl_canvas_layout_internal_text.eo2
7 files changed, 118 insertions, 37 deletions
diff --git a/src/lib/edje/Edje_Legacy.h b/src/lib/edje/Edje_Legacy.h
index 64ba13fe9f..5c6d57eed5 100644
--- a/src/lib/edje/Edje_Legacy.h
+++ b/src/lib/edje/Edje_Legacy.h
@@ -1387,6 +1387,44 @@ EAPI const char * edje_object_part_text_get(const Edje_Object *obj, const char *
EAPI void edje_object_part_text_cursor_begin_set(Edje_Object *obj, const char *part, Edje_Cursor cur);
/**
+ * @brief Moves the cursor to the end of the text part. @ref
+ * evas_textblock_cursor_paragraph_last
+ *
+ * @param[in] part The part name
+ * @param[in] cur The edje cursor to work on
+ *
+ * @ingroup Edje_Object
+ */
+EAPI void edje_object_part_text_cursor_end_set(Edje_Object *obj, const char *part, Edje_Cursor cur);
+
+/**
+ * @brief Sets the cursor position to the given value
+ *
+ * @param[in] part The part name
+ * @param[in] cur The cursor to move
+ * @param[in] pos The position of the cursor
+ *
+ * @since 1.1.0
+ *
+ * @ingroup Edje_Object
+ */
+EAPI void edje_object_part_text_cursor_pos_set(Edje_Object *obj, const char * part, Edje_Cursor cur, int pos);
+
+/**
+ * @brief Retrieves the current position of the cursor
+ *
+ * @param[in] part The part name
+ * @param[in] cur The cursor to move
+ *
+ * @return The position of the cursor
+ *
+ * @since 1.1.0
+ *
+ * @ingroup Edje_Object
+ */
+EAPI int edje_object_part_text_cursor_pos_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 958b2ffe02..61443982b3 100644
--- a/src/lib/edje/edje_entry.c
+++ b/src/lib/edje/edje_entry.c
@@ -4162,11 +4162,11 @@ _edje_entry_cursor_begin(Edje_Real_Part *rp, Edje_Cursor cur)
_edje_text_cursor_begin(rp, c);
}
+
void
-_edje_entry_cursor_end(Edje_Real_Part *rp, Edje_Cursor cur)
+_edje_text_cursor_end(Edje_Real_Part *rp, Efl_Text_Cursor_Cursor_Data *c)
{
Entry *en;
- Evas_Textblock_Cursor *c = _cursor_get(rp, cur);
int old_cur_pos;
if ((rp->type != EDJE_RP_TYPE_TEXT) ||
@@ -4190,6 +4190,12 @@ _edje_entry_cursor_end(Edje_Real_Part *rp, Edje_Cursor cur)
_edje_emit(en->ed, "cursor,changed", rp->part->name);
_edje_entry_real_part_configure(en->ed, rp);
}
+void
+_edje_entry_cursor_end(Edje_Real_Part *rp, Edje_Cursor cur)
+{
+ Evas_Textblock_Cursor *c = _cursor_get(rp, cur);
+ _edje_text_cursor_end(rp, c);
+}
void
_edje_entry_cursor_copy(Edje_Real_Part *rp, Edje_Cursor cur, Edje_Cursor dst)
@@ -4321,14 +4327,11 @@ _edje_entry_cursor_content_get(Edje_Real_Part *rp, Edje_Cursor cur)
}
void
-_edje_entry_cursor_pos_set(Edje_Real_Part *rp, Edje_Cursor cur, int pos)
+_edje_text_cursor_pos_set(Edje_Real_Part *rp, Efl_Text_Cursor_Cursor_Data *c, int pos)
{
- Entry *en;
- Evas_Textblock_Cursor *c = _cursor_get(rp, cur);
-
if ((rp->type != EDJE_RP_TYPE_TEXT) ||
(!rp->typedata.text)) return;
- en = rp->typedata.text->entry_data;
+ Entry *en = rp->typedata.text->entry_data;
if (!en) return;
if (!c) return;
/* Abort if cursor position didn't really change */
@@ -4344,12 +4347,26 @@ _edje_entry_cursor_pos_set(Edje_Real_Part *rp, Edje_Cursor cur, int pos)
_edje_entry_real_part_configure(en->ed, rp);
}
+void
+_edje_entry_cursor_pos_set(Edje_Real_Part *rp, Edje_Cursor cur, int pos)
+{
+ Evas_Textblock_Cursor *c = _cursor_get(rp, cur);
+
+ _edje_text_cursor_pos_set(rp, c, pos);
+}
+
+int
+_edje_text_cursor_pos_get(Edje_Real_Part *rp EINA_UNUSED, Efl_Text_Cursor_Cursor_Data *c)
+{
+ return evas_textblock_cursor_pos_get(c);
+}
+
int
_edje_entry_cursor_pos_get(Edje_Real_Part *rp, Edje_Cursor cur)
{
Evas_Textblock_Cursor *c = _cursor_get(rp, cur);
if (!c) return 0;
- return evas_textblock_cursor_pos_get(c);
+ return _edje_text_cursor_pos_get(rp, c);
}
void
diff --git a/src/lib/edje/edje_legacy.c b/src/lib/edje/edje_legacy.c
index c71345da00..7605465861 100644
--- a/src/lib/edje/edje_legacy.c
+++ b/src/lib/edje/edje_legacy.c
@@ -201,3 +201,25 @@ edje_object_part_text_cursor_begin_set(Edje_Object *obj, const char *part, Edje_
efl_text_cursor_paragraph_first(efl_part(obj, part),
efl_text_cursor_get(efl_part(obj, part), (int) cur));
}
+
+EAPI void
+edje_object_part_text_cursor_end_set(Edje_Object *obj, const char *part, Edje_Cursor cur)
+{
+ efl_text_cursor_paragraph_last(efl_part(obj, part),
+ efl_text_cursor_get(efl_part(obj, part), (int) cur));
+}
+
+EAPI void
+edje_object_part_text_cursor_pos_set(Edje_Object *obj, const char * part, Edje_Cursor cur, int pos)
+{
+ efl_text_cursor_position_set(efl_part(obj, part),
+ efl_text_cursor_get(efl_part(obj, part), (int) cur), pos);
+}
+
+EAPI int
+edje_object_part_text_cursor_pos_get(const Edje_Object *obj, const char * part, Edje_Cursor cur)
+{
+ return efl_text_cursor_position_get(efl_part(obj, part),
+ efl_text_cursor_get(efl_part(obj, part), (int) cur));
+
+}
diff --git a/src/lib/edje/edje_object.eo b/src/lib/edje/edje_object.eo
index 1675b76212..22539950bf 100644
--- a/src/lib/edje/edje_object.eo
+++ b/src/lib/edje/edje_object.eo
@@ -907,16 +907,6 @@ class Edje.Object (Efl.Canvas.Group.Clipped, Efl.File, Efl.Container, Efl.Part,
}
return: bool; [[$true if the visible character is hidden. $false if there is no visible character or the object is not set for password mode.]]
}
- @property part_text_cursor_end {
- set {
- [[Moves the cursor to the end of the text part.
- \@ref evas_textblock_cursor_paragraph_last]]
- }
- values {
- part: string; [[The part name]]
- cur: Edje.Cursor; [[The edje cursor to work on]]
- }
- }
@property part_text_cursor_line_begin {
set {
[[Moves the cursor to the beginning of the line.
@@ -1005,25 +995,6 @@ class Edje.Object (Efl.Canvas.Group.Clipped, Efl.File, Efl.Container, Efl.Part,
y: int; [[Y Coordinate.]]
}
}
- @property part_text_cursor_pos {
- set {
- [[Sets the cursor position to the given value
-
- @since 1.1.0]]
- }
- get {
- [[Retrieves the current position of the cursor
-
- @since 1.1.0]]
- }
- keys {
- part: string; [[The part name]]
- cur: Edje.Cursor; [[The cursor to move]]
- }
- values {
- pos: int; [[The position of the cursor]]
- }
- }
part_text_cursor_copy {
[[Copies the cursor to another cursor.]]
diff --git a/src/lib/edje/edje_part_text.c b/src/lib/edje/edje_part_text.c
index b4306d0674..99245eaa56 100644
--- a/src/lib/edje/edje_part_text.c
+++ b/src/lib/edje/edje_part_text.c
@@ -38,5 +38,32 @@ _efl_canvas_layout_internal_text_efl_text_cursor_cursor_paragraph_first(Eo *obj,
_edje_text_cursor_begin(pd->rp, cur);
RETURN_VOID;
}
+
+EOLIAN static void
+_efl_canvas_layout_internal_text_efl_text_cursor_cursor_paragraph_last(Eo *obj,
+ void *_pd EINA_UNUSED, Efl_Text_Cursor_Cursor_Data *cur)
+{
+ PROXY_DATA_GET(obj, pd);
+ _edje_text_cursor_end(pd->rp, cur);
+ RETURN_VOID;
+}
+
+EOLIAN static void
+_efl_canvas_layout_internal_text_efl_text_cursor_cursor_position_set(Eo *obj,
+ void *_pd EINA_UNUSED, Efl_Text_Cursor_Cursor_Data *cur, int pos)
+{
+ PROXY_DATA_GET(obj, pd);
+ _edje_text_cursor_pos_set(pd->rp, cur, pos);
+ RETURN_VOID;
+}
+
+EOLIAN static int
+_efl_canvas_layout_internal_text_efl_text_cursor_cursor_position_get(Eo *obj,
+ void *_pd EINA_UNUSED, Efl_Text_Cursor_Cursor_Data *cur)
+{
+ PROXY_DATA_GET(obj, pd);
+ RETURN_VAL(_edje_text_cursor_pos_get(pd->rp, cur));
+}
+
#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 b26cb36d49..7f2d954aa7 100644
--- a/src/lib/edje/edje_private.h
+++ b/src/lib/edje/edje_private.h
@@ -3150,6 +3150,10 @@ Eina_Bool _edje_efl_text_set(Eo *obj, Edje *ed, const char *part, const char *
const char *_edje_efl_text_get(Eo *obj, Edje *ed, const char *part);
Evas_Textblock_Cursor *_edje_text_cursor_get(Edje_Real_Part *rp, Edje_Cursor cur);
void _edje_text_cursor_begin(Edje_Real_Part *rp, Efl_Text_Cursor_Cursor_Data *cur);
+void _edje_text_cursor_end(Edje_Real_Part *rp, Efl_Text_Cursor_Cursor_Data *cur);
+void _edje_text_cursor_end(Edje_Real_Part *rp, Efl_Text_Cursor_Cursor_Data *cur);
+void _edje_text_cursor_pos_set(Edje_Real_Part *rp, Efl_Text_Cursor_Cursor_Data *cur, int pos);
+int _edje_text_cursor_pos_get(Edje_Real_Part *rp, Efl_Text_Cursor_Cursor_Data *cur);
void _edje_internal_proxy_shutdown(void);
diff --git a/src/lib/edje/efl_canvas_layout_internal_text.eo b/src/lib/edje/efl_canvas_layout_internal_text.eo
index 6d14495b94..7e29a63244 100644
--- a/src/lib/edje/efl_canvas_layout_internal_text.eo
+++ b/src/lib/edje/efl_canvas_layout_internal_text.eo
@@ -11,5 +11,7 @@ class Efl.Canvas.Layout_Internal.Text (Efl.Canvas.Layout_Internal, Efl.Text,
Efl.Text.text { set; get; }
Efl.Text.Cursor.cursor { get; }
Efl.Text.Cursor.cursor_paragraph_first;
+ Efl.Text.Cursor.cursor_paragraph_last;
+ Efl.Text.Cursor.cursor_position { set; get; }
}
}