From 58d7c5c1dcef38ab671b6066aa779e725b693022 Mon Sep 17 00:00:00 2001 From: Jihoon Kim Date: Sat, 13 Apr 2013 17:01:56 +0900 Subject: [PATCH] ecore_imf: Add ecore_imf_input_panel_hide() API --- ChangeLog | 4 ++++ NEWS | 4 +++- src/lib/ecore_imf/Ecore_IMF.h | 8 ++++++++ src/lib/ecore_imf/ecore_imf.c | 16 ++++++++++++++++ src/lib/ecore_imf/ecore_imf_context.c | 8 ++++++++ 5 files changed, 39 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 61514bea81..da95d22829 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2013-04-13 Jihoon Kim + + * Ecore_IMF: Add ecore_imf_input_panel_hide () API + 2013-04-10 Rafael Antognolli * Ecore: Add support for double and triple click on Wayland. diff --git a/NEWS b/NEWS index 2c50a8d142..8b0a81bba9 100644 --- a/NEWS +++ b/NEWS @@ -90,7 +90,9 @@ Additions: * Ecore: - notify systemd that we are ready as soon as the main loop is running. - automatically support Watchdog. - * ecore_imf: Add ecore_imf_context_input_panel_layout_variation_set/get API + * ecore_imf: + - Add ecore_imf_context_input_panel_layout_variation_set/get API + - Add ecore_imf_input_panel_hide API * Add edje_object_part_text_input_panel_layout_variation_set/get API * Evil: - Add mkdtemp. diff --git a/src/lib/ecore_imf/Ecore_IMF.h b/src/lib/ecore_imf/Ecore_IMF.h index 012c29e0bf..2eb81fdfbd 100644 --- a/src/lib/ecore_imf/Ecore_IMF.h +++ b/src/lib/ecore_imf/Ecore_IMF.h @@ -535,6 +535,14 @@ EAPI int ecore_imf_shutdown(void); EAPI void ecore_imf_module_register(const Ecore_IMF_Context_Info *info, Ecore_IMF_Context *(*imf_module_create)(void), Ecore_IMF_Context *(*imf_module_exit)(void)); +/** + * Hide the input panel. + * @return EINA_TRUE if the input panel will be hidden + EINA_FALSE if the input panel is already in hidden state + * @ingroup Ecore_IMF_Lib_Group + */ +EAPI Eina_Bool ecore_imf_input_panel_hide(void); + /** * Get the list of the available Input Method Context ids. * diff --git a/src/lib/ecore_imf/ecore_imf.c b/src/lib/ecore_imf/ecore_imf.c index 143acc4e83..0f5b75fd4b 100644 --- a/src/lib/ecore_imf/ecore_imf.c +++ b/src/lib/ecore_imf/ecore_imf.c @@ -16,6 +16,7 @@ EAPI int ECORE_IMF_EVENT_DELETE_SURROUNDING = 0; int _ecore_imf_log_dom = -1; static int _ecore_imf_init_count = 0; +extern Ecore_IMF_Context *show_req_ctx; EAPI int ecore_imf_init(void) @@ -52,3 +53,18 @@ ecore_imf_shutdown(void) ecore_shutdown(); return _ecore_imf_init_count; } + +EAPI Eina_Bool +ecore_imf_input_panel_hide(void) +{ + if (show_req_ctx) + { + if (ecore_imf_context_input_panel_state_get(show_req_ctx) != ECORE_IMF_INPUT_PANEL_STATE_HIDE) + { + ecore_imf_context_input_panel_hide(show_req_ctx); + return EINA_TRUE; + } + } + + return EINA_FALSE; +} diff --git a/src/lib/ecore_imf/ecore_imf_context.c b/src/lib/ecore_imf/ecore_imf_context.c index 41a84b2cee..7c8318e547 100644 --- a/src/lib/ecore_imf/ecore_imf_context.c +++ b/src/lib/ecore_imf/ecore_imf_context.c @@ -12,6 +12,8 @@ #include "Ecore_IMF.h" #include "ecore_imf_private.h" +Ecore_IMF_Context *show_req_ctx = NULL; + EAPI Eina_List * ecore_imf_context_available_ids_get(void) { @@ -251,6 +253,8 @@ ecore_imf_context_show(Ecore_IMF_Context *ctx) "ecore_imf_context_show"); return; } + + show_req_ctx = ctx; if (ctx->klass->show) ctx->klass->show(ctx); } @@ -263,6 +267,8 @@ ecore_imf_context_hide(Ecore_IMF_Context *ctx) "ecore_imf_context_hide"); return; } + + show_req_ctx = NULL; if (ctx->klass->hide) ctx->klass->hide(ctx); } @@ -772,6 +778,7 @@ ecore_imf_context_input_panel_show(Ecore_IMF_Context *ctx) return; } + show_req_ctx = ctx; if (ctx->klass->show) ctx->klass->show(ctx); } @@ -785,6 +792,7 @@ ecore_imf_context_input_panel_hide(Ecore_IMF_Context *ctx) return; } + show_req_ctx = NULL; if (ctx->klass->hide) ctx->klass->hide(ctx); }