diff --git a/legacy/edje/src/lib/Edje.h b/legacy/edje/src/lib/Edje.h index 45be5ab0d7..49b1be7212 100644 --- a/legacy/edje/src/lib/Edje.h +++ b/legacy/edje/src/lib/Edje.h @@ -236,6 +236,9 @@ extern "C" { EAPI void edje_object_part_text_set (Evas_Object *obj, const char *part, const char *text); EAPI const char *edje_object_part_text_get (const Evas_Object *obj, const char *part); EAPI const char *edje_object_part_text_selection_get(const Evas_Object *obj, const char *part); + EAPI void edje_object_part_text_select_none(const Evas_Object *obj, const char *part); + EAPI void edje_object_part_text_select_all(const Evas_Object *obj, const char *part); + EAPI void edje_object_part_text_insert (Evas_Object *obj, const char *part, const char *text); EAPI Eina_List *edje_object_part_text_anchor_list_get(const Evas_Object *obj, const char *part); EAPI Eina_List *edje_object_part_text_anchor_geometry_get(const Evas_Object *obj, const char *part, const char *anchor); diff --git a/legacy/edje/src/lib/edje_entry.c b/legacy/edje/src/lib/edje_entry.c index 92d19763a2..d5d88cc248 100644 --- a/legacy/edje/src/lib/edje_entry.c +++ b/legacy/edje/src/lib/edje_entry.c @@ -27,13 +27,6 @@ void *alloca (size_t); #include "edje_private.h" -// FIXME: need a way to propagate emits to selections and cursors (eg for disabled etc.) -// FIXME: look for anchors <+ a href=X>... in nodes - make matching anchor -// ranges (2 cursors) AND then make matching acnhor event objects, -// capture events on those objects, emit achor mouse,in, mouse,out, -// mouse,down and mouse,up -// FIXME: apis 's query anchor stuff???, anchor revents - typedef struct _Entry Entry; typedef struct _Sel Sel; typedef struct _Anchor Anchor; @@ -1345,6 +1338,27 @@ _edje_entry_set_cursor_end(Edje_Real_Part *rp) _curs_end(en->cursor, rp->object, en); } +void +_edje_entry_select_none(Edje_Real_Part *rp) +{ + Entry *en = rp->entry_data; + if (!en) return; + _sel_clear(en->cursor, rp->object, en); +} + +void +_edje_entry_select_all(Edje_Real_Part *rp) +{ + Entry *en = rp->entry_data; + if (!en) return; + _sel_clear(en->cursor, rp->object, en); + _curs_start(en->cursor, rp->object, en); + _sel_enable(en->cursor, rp->object, en); + _sel_start(en->cursor, rp->object, en); + _curs_end(en->cursor, rp->object, en); + _sel_extend(en->cursor, rp->object, en); +} + const Eina_List * _edje_entry_anchor_geometry_get(Edje_Real_Part *rp, const char *anchor) { diff --git a/legacy/edje/src/lib/edje_private.h b/legacy/edje/src/lib/edje_private.h index b3524f899d..fea17708d8 100644 --- a/legacy/edje/src/lib/edje_private.h +++ b/legacy/edje/src/lib/edje_private.h @@ -1236,6 +1236,8 @@ void _edje_entry_text_markup_set(Edje_Real_Part *rp, const char *text); void _edje_entry_text_markup_insert(Edje_Real_Part *rp, const char *text); void _edje_entry_set_cursor_start(Edje_Real_Part *rp); void _edje_entry_set_cursor_end(Edje_Real_Part *rp); +void _edje_entry_select_none(Edje_Real_Part *rp); +void _edje_entry_select_all(Edje_Real_Part *rp); const Eina_List *_edje_entry_anchor_geometry_get(Edje_Real_Part *rp, const char *anchor); const Eina_List *_edje_entry_anchors_list(Edje_Real_Part *rp); void _edje_entry_cursor_geometry_get(Edje_Real_Part *rp, Evas_Coord *cx, Evas_Coord *cy, Evas_Coord *cw, Evas_Coord *ch); diff --git a/legacy/edje/src/lib/edje_util.c b/legacy/edje/src/lib/edje_util.c index bc1185c619..a81fcc7ce1 100644 --- a/legacy/edje/src/lib/edje_util.c +++ b/legacy/edje/src/lib/edje_util.c @@ -947,6 +947,42 @@ edje_object_part_text_selection_get(const Evas_Object *obj, const char *part) return NULL; } +/** sets the selection to be none + * @param obj A valid Evas_Object handle + * @param part The part name + */ +EAPI void +edje_object_part_text_select_none(const Evas_Object *obj, const char *part) +{ + Edje *ed; + Edje_Real_Part *rp; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return; + rp = _edje_real_part_recursive_get(ed, (char *)part); + if (!rp) return; + if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) + _edje_entry_select_none(rp); +} + +/** sets the selection to be everything + * @param obj A valid Evas_Object handle + * @param part The part name + */ +EAPI void +edje_object_part_text_select_all(const Evas_Object *obj, const char *part) +{ + Edje *ed; + Edje_Real_Part *rp; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return; + rp = _edje_real_part_recursive_get(ed, (char *)part); + if (!rp) return; + if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) + _edje_entry_select_all(rp); +} + /** Inserts the text for an object part just before the cursor position * @param obj A valid Evas Object handle * @param part The part name