diff --git a/ChangeLog b/ChangeLog index 4be775c02a..8d50d5192c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2013-08-13 Jihoon Kim + + * Ecore_IMF: add ecore_imf_context_input_panel_on_demand_set/get() + 2013-08-09 Cedric Bail * Edje: add edje_object_mmap_set(). diff --git a/NEWS b/NEWS index 0790089c06..6da6d0ee2c 100644 --- a/NEWS +++ b/NEWS @@ -141,6 +141,7 @@ Additions: - Add ecore_imf_input_panel_hide API - Add ecore_imf_context_input_panel_event_callback_call, clear API - Add ECORE_IMF_INPUT_PANEL_LAYOUT_DATETIME layout + - Add ecore_imf_context_input_panel_on_demand_set/get API * Eio: - Add eio_eet_sync symbols. diff --git a/src/lib/ecore_imf/Ecore_IMF.h b/src/lib/ecore_imf/Ecore_IMF.h index 669e39a9e0..df37a4dc01 100644 --- a/src/lib/ecore_imf/Ecore_IMF.h +++ b/src/lib/ecore_imf/Ecore_IMF.h @@ -1523,6 +1523,27 @@ EAPI void ecore_imf_context_input_panel_language_locale */ EAPI void ecore_imf_context_candidate_panel_geometry_get(Ecore_IMF_Context *ctx, int *x, int *y, int *w, int *h); +/** + * Set whether the Input Method Context should request to show the input panel in case of only an user's explicit Mouse Up event. + * It doesn't request to show the input panel even though the Input Method Context has focus. + * + * @param ctx An #Ecore_IMF_Context. + * @param ondemand If true, the input panel will be shown in case of only Mouse up event. (Focus event will be ignored.) + * @ingroup Ecore_IMF_Context_Group + * @since 1.8.0 + */ +EAPI void ecore_imf_context_input_panel_show_on_demand_set(Ecore_IMF_Context *ctx, Eina_Bool ondemand); + +/** + * Get whether the Input Method Context should request to show the input panel in case of only an user's explicit Mouse Up event. + * + * @param ctx An #Ecore_IMF_Context. + * @return @c EINA_TRUE if the input panel will be shown in case of only Mouse up event. + * @ingroup Ecore_IMF_Context_Group + * @since 1.8.0 + */ +EAPI Eina_Bool ecore_imf_context_input_panel_show_on_demand_get(Ecore_IMF_Context *ctx); + /* The following entry points must be exported by each input method module */ diff --git a/src/lib/ecore_imf/ecore_imf_context.c b/src/lib/ecore_imf/ecore_imf_context.c index 272a04be66..6b243d6447 100644 --- a/src/lib/ecore_imf/ecore_imf_context.c +++ b/src/lib/ecore_imf/ecore_imf_context.c @@ -1207,3 +1207,29 @@ ecore_imf_context_candidate_panel_geometry_get(Ecore_IMF_Context *ctx, int *x, i ctx->klass->candidate_panel_geometry_get(ctx, x, y, w, h); } +EAPI void +ecore_imf_context_input_panel_show_on_demand_set(Ecore_IMF_Context *ctx, Eina_Bool ondemand) +{ + if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT)) + { + ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT, + "ecore_imf_context_input_panel_show_on_demand_set"); + return; + } + + ctx->input_panel_show_on_demand = ondemand; +} + +EAPI Eina_Bool +ecore_imf_context_input_panel_show_on_demand_get(Ecore_IMF_Context *ctx) +{ + if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT)) + { + ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT, + "ecore_imf_context_input_panel_show_on_demand_get"); + return EINA_FALSE; + } + + return ctx->input_panel_show_on_demand; +} + diff --git a/src/lib/ecore_imf/ecore_imf_private.h b/src/lib/ecore_imf/ecore_imf_private.h index b63500afec..5c62cfd291 100644 --- a/src/lib/ecore_imf/ecore_imf_private.h +++ b/src/lib/ecore_imf/ecore_imf_private.h @@ -60,6 +60,7 @@ struct _Ecore_IMF_Context Eina_Bool input_panel_enabled : 1; Eina_Bool input_panel_return_key_disabled : 1; Eina_Bool input_panel_caps_lock_mode : 1; + Eina_Bool input_panel_show_on_demand : 1; }; struct _Ecore_IMF_Module