From c58edcd114dc95da01bea81d5b4ac69d4d93f89d Mon Sep 17 00:00:00 2001 From: Jihoon Kim Date: Thu, 23 Feb 2012 06:15:12 +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: 68306 --- legacy/edje/src/lib/Edje.h | 18 +++++++++++++++++- legacy/edje/src/lib/edje_entry.c | 11 +++++++++++ legacy/edje/src/lib/edje_private.h | 4 +++- legacy/edje/src/lib/edje_util.c | 20 ++++++++++++++++++++ 4 files changed, 51 insertions(+), 2 deletions(-) diff --git a/legacy/edje/src/lib/Edje.h b/legacy/edje/src/lib/Edje.h index 2aa8a05131..1c1621a91a 100644 --- a/legacy/edje/src/lib/Edje.h +++ b/legacy/edje/src/lib/Edje.h @@ -452,6 +452,10 @@ param in edje programs # undef EAPI #endif +#ifdef HAVE_ECORE_IMF +#include +#endif + #ifdef _WIN32 # ifdef EFL_EDJE_BUILD # ifdef DLL_EXPORT @@ -2869,9 +2873,21 @@ 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); +#ifdef HAVE_ECORE_IMF +/** + * @brief Get the input method context in entry. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * + * @return The input method context in entry + */ +EAPI Ecore_IMF_Context *edje_object_part_text_imf_context_get (const Evas_Object *obj, const char *part); +#endif + /** * @brief Set the layout of the input panel. - * + * * The layout of the input panel or virtual keyboard can make it easier or * harder to enter content. This allows you to hint what kind of input you * are expecting to enter and thus have the input panel automatically diff --git a/legacy/edje/src/lib/edje_entry.c b/legacy/edje/src/lib/edje_entry.c index 84b69098bf..f28be42a14 100644 --- a/legacy/edje/src/lib/edje_entry.c +++ b/legacy/edje/src/lib/edje_entry.c @@ -2553,6 +2553,17 @@ _edje_entry_select_abort(Edje_Real_Part *rp) } } +#ifdef HAVE_ECORE_IMF +Ecore_IMF_Context * +_edje_entry_imf_context_get(Edje_Real_Part *rp) +{ + Entry *en = rp->entry_data; + if (!en) return NULL; + + return en->imf_context; +} +#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..9a4112f416 100644 --- a/legacy/edje/src/lib/edje_private.h +++ b/legacy/edje/src/lib/edje_private.h @@ -1940,7 +1940,9 @@ 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); - +#ifdef HAVE_ECORE_IMF +Ecore_IMF_Context *_edje_entry_imf_context_get(Edje_Real_Part *rp); +#endif 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..a248764b0b 100644 --- a/legacy/edje/src/lib/edje_util.c +++ b/legacy/edje/src/lib/edje_util.c @@ -1527,6 +1527,26 @@ edje_object_part_text_select_extend(const Evas_Object *obj, const char *part) _edje_entry_select_extend(rp); } +#ifdef HAVE_ECORE_IMF +EAPI Ecore_IMF_Context * +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; +} +#endif + EAPI Eina_Bool edje_object_part_text_cursor_next(Evas_Object *obj, const char *part, Edje_Cursor cur) {