From a586231049b07e154d4e68333acb989f03eec845 Mon Sep 17 00:00:00 2001 From: Jihoon Kim Date: Fri, 21 Aug 2015 22:40:51 +0900 Subject: [PATCH] Support to disable return key Change-Id: Ib69a894ba97116afe8d290beb3997e2f90a59872 --- ism/extras/efl_wsc/isf_wsc_context.h | 1 + ism/extras/efl_wsc/isf_wsc_control_ui.cpp | 10 +++++++++- ism/extras/efl_wsc/isf_wsc_control_ui.h | 1 + ism/extras/efl_wsc/isf_wsc_efl.cpp | 21 +++++++++++++++++++-- 4 files changed, 30 insertions(+), 3 deletions(-) diff --git a/ism/extras/efl_wsc/isf_wsc_context.h b/ism/extras/efl_wsc/isf_wsc_context.h index 188c2cb..2b92035 100644 --- a/ism/extras/efl_wsc/isf_wsc_context.h +++ b/ism/extras/efl_wsc/isf_wsc_context.h @@ -69,6 +69,7 @@ struct weescim Eina_Bool context_changed; Eina_Bool hw_kbd; + Eina_Bool return_key_disabled; WSCContextISF *wsc_ctx; }; diff --git a/ism/extras/efl_wsc/isf_wsc_control_ui.cpp b/ism/extras/efl_wsc/isf_wsc_control_ui.cpp index 7e5b739..975f6d7 100644 --- a/ism/extras/efl_wsc/isf_wsc_control_ui.cpp +++ b/ism/extras/efl_wsc/isf_wsc_control_ui.cpp @@ -139,7 +139,7 @@ void isf_wsc_context_input_panel_show (WSCContextISF* ctx) iseContext.return_key_type = (Ecore_IMF_Input_Panel_Return_Key_Type)ctx->ctx->return_key_type; /* set return key disabled */ - iseContext.return_key_disabled = EINA_FALSE; + iseContext.return_key_disabled = ctx->ctx->return_key_disabled; /* set caps mode */ iseContext.caps_mode = caps_mode_check (ctx, EINA_TRUE, EINA_FALSE); @@ -264,3 +264,11 @@ Ecore_IMF_Input_Panel_Lang isf_wsc_context_input_panel_language_get (WSCContextI _isf_wsc_context_init (); return iseContext.language; } + +void isf_wsc_context_input_panel_return_key_disabled_set (WSCContextISF *ctx, Eina_Bool disabled) +{ + if (!IfInitContext) + _isf_wsc_context_init (); + LOGD ("ctx : %p, disabled : %d\n", ctx, disabled); + _isf_wsc_context_input_panel_return_key_disabled_set (_get_context_id (ctx), disabled); +} diff --git a/ism/extras/efl_wsc/isf_wsc_control_ui.h b/ism/extras/efl_wsc/isf_wsc_control_ui.h index 9408709..ba02ff5 100644 --- a/ism/extras/efl_wsc/isf_wsc_control_ui.h +++ b/ism/extras/efl_wsc/isf_wsc_control_ui.h @@ -50,6 +50,7 @@ extern "C" void isf_wsc_context_input_panel_caps_mode_set (WSCContextISF *ctx, unsigned int mode); void isf_wsc_context_input_panel_caps_lock_mode_set (WSCContextISF *ctx, Eina_Bool mode); void isf_wsc_context_set_keyboard_mode (WSCContextISF *ctx, scim::TOOLBAR_MODE_T mode); + void isf_wsc_context_input_panel_return_key_disabled_set (WSCContextISF *ctx, Eina_Bool disabled); #ifdef __cplusplus } diff --git a/ism/extras/efl_wsc/isf_wsc_efl.cpp b/ism/extras/efl_wsc/isf_wsc_efl.cpp index c7de444..b82bd14 100644 --- a/ism/extras/efl_wsc/isf_wsc_efl.cpp +++ b/ism/extras/efl_wsc/isf_wsc_efl.cpp @@ -211,9 +211,25 @@ _wsc_im_ctx_return_key_type(void *data, struct wl_input_method_context *im_ctx, LOGD ("im_context = %p return key type = %d", im_ctx, return_key_type); if (!wsc || !wsc->wsc_ctx) return; - wsc->return_key_type = return_key_type; + if (wsc->return_key_type != return_key_type) { + wsc->return_key_type = return_key_type; + isf_wsc_context_input_panel_show (wsc->wsc_ctx); + } +} - isf_wsc_context_input_panel_show (wsc->wsc_ctx); +static void +_wsc_im_ctx_return_key_disabled(void *data, struct wl_input_method_context *im_ctx, uint32_t disabled) +{ + struct weescim *wsc = (weescim*)data; + Eina_Bool return_key_disabled = !!disabled; + + LOGD ("im_context = %p return key disabled = %d", im_ctx, return_key_disabled); + if (!wsc || !wsc->wsc_ctx) return; + + if (wsc->return_key_disabled != return_key_disabled) { + wsc->return_key_disabled = return_key_disabled; + isf_wsc_context_input_panel_return_key_disabled_set (wsc->wsc_ctx, wsc->return_key_disabled); + } } static const struct wl_input_method_context_listener wsc_im_context_listener = { @@ -224,6 +240,7 @@ static const struct wl_input_method_context_listener wsc_im_context_listener = { _wsc_im_ctx_commit_state, _wsc_im_ctx_preferred_language, _wsc_im_ctx_return_key_type, + _wsc_im_ctx_return_key_disabled }; static void -- 2.7.4