From 8c9ee103cba96155e427a3e6bd6136e17fe7a559 Mon Sep 17 00:00:00 2001 From: Jihoon Kim Date: Fri, 24 Feb 2012 06:51:04 +0000 Subject: [PATCH] Add edje_object_part_text_imf_context_get API. This API can be used to get the input method context in entry. SVN revision: 68385 --- legacy/edje/ChangeLog | 4 ++++ legacy/edje/src/lib/Edje.h | 14 ++++++++++++++ legacy/edje/src/lib/edje_entry.c | 13 +++++++++++++ legacy/edje/src/lib/edje_private.h | 2 +- legacy/edje/src/lib/edje_util.c | 18 ++++++++++++++++++ 5 files changed, 50 insertions(+), 1 deletion(-) diff --git a/legacy/edje/ChangeLog b/legacy/edje/ChangeLog index 6d998ed331..25e9e80b02 100644 --- a/legacy/edje/ChangeLog +++ b/legacy/edje/ChangeLog @@ -360,3 +360,7 @@ * Change API names from edje_object_markup_filter_callback_{add,del,del_full}. to edje_object_text_markup_filter_callback_{add,del,del_full}. + +2012-02-24 Jihoon Kim + + * add edje_object_part_text_imf_context_get for getting Ecore_IMF_Context handle in edje text object diff --git a/legacy/edje/src/lib/Edje.h b/legacy/edje/src/lib/Edje.h index e411295660..03e439fa5a 100644 --- a/legacy/edje/src/lib/Edje.h +++ b/legacy/edje/src/lib/Edje.h @@ -2873,6 +2873,20 @@ EAPI int edje_object_part_text_cursor_pos_get (const E */ EAPI void edje_object_part_text_imf_context_reset (const Evas_Object *obj, const char *part); +/** + * @brief Get the input method context in entry. + * + * If ecore_imf was not available when edje was compiled, this function returns NULL + * otherwise, the returned pointer is an Ecore_IMF * + * + * @param obj A valid Evas_Object handle + * @param part The part name + * + * @return The input method context (Ecore_IMF_Context *) in entry + * @since 1.2.0 + */ +EAPI void *edje_object_part_text_imf_context_get (const Evas_Object *obj, const char *part); + /** * @brief Set the layout of the input panel. * diff --git a/legacy/edje/src/lib/edje_entry.c b/legacy/edje/src/lib/edje_entry.c index 84b69098bf..a39d8e1cf8 100644 --- a/legacy/edje/src/lib/edje_entry.c +++ b/legacy/edje/src/lib/edje_entry.c @@ -2553,6 +2553,19 @@ _edje_entry_select_abort(Edje_Real_Part *rp) } } +void * +_edje_entry_imf_context_get(Edje_Real_Part *rp) +{ + Entry *en = rp->entry_data; + if (!en) return NULL; + +#ifdef HAVE_ECORE_IMF + return en->imf_context; +#else + return NULL; +#endif +} + void _edje_entry_autocapital_type_set(Edje_Real_Part *rp, Edje_Text_Autocapital_Type autocapital_type) { diff --git a/legacy/edje/src/lib/edje_private.h b/legacy/edje/src/lib/edje_private.h index d9d578c6f0..30bb242dbd 100644 --- a/legacy/edje/src/lib/edje_private.h +++ b/legacy/edje/src/lib/edje_private.h @@ -1940,7 +1940,7 @@ void _edje_entry_cursor_geometry_get(Edje_Real_Part *rp, Evas_Coord *cx, Evas_Co void _edje_entry_select_allow_set(Edje_Real_Part *rp, Eina_Bool allow); Eina_Bool _edje_entry_select_allow_get(const Edje_Real_Part *rp); void _edje_entry_select_abort(Edje_Real_Part *rp); - +void *_edje_entry_imf_context_get(Edje_Real_Part *rp); Eina_Bool _edje_entry_cursor_next(Edje_Real_Part *rp, Edje_Cursor cur); Eina_Bool _edje_entry_cursor_prev(Edje_Real_Part *rp, Edje_Cursor cur); Eina_Bool _edje_entry_cursor_up(Edje_Real_Part *rp, Edje_Cursor cur); diff --git a/legacy/edje/src/lib/edje_util.c b/legacy/edje/src/lib/edje_util.c index 6750b5b831..8c72fd8ae0 100644 --- a/legacy/edje/src/lib/edje_util.c +++ b/legacy/edje/src/lib/edje_util.c @@ -1527,6 +1527,24 @@ edje_object_part_text_select_extend(const Evas_Object *obj, const char *part) _edje_entry_select_extend(rp); } +EAPI void * +edje_object_part_text_imf_context_get(const Evas_Object *obj, const char *part) +{ + Edje *ed; + Edje_Real_Part *rp; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return NULL; + + rp = _edje_real_part_recursive_get(ed, (char *)part); + if (!rp) return NULL; + + if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) + return _edje_entry_imf_context_get(rp); + else + return NULL; +} + EAPI Eina_Bool edje_object_part_text_cursor_next(Evas_Object *obj, const char *part, Edje_Cursor cur) {