Support to disable return key 62/46562/2
authorJihoon Kim <jihoon48.kim@samsung.com>
Fri, 21 Aug 2015 13:40:51 +0000 (22:40 +0900)
committerJihoon Kim <jihoon48.kim@samsung.com>
Mon, 24 Aug 2015 02:42:46 +0000 (11:42 +0900)
Change-Id: Ib69a894ba97116afe8d290beb3997e2f90a59872

ism/extras/efl_wsc/isf_wsc_context.h
ism/extras/efl_wsc/isf_wsc_control_ui.cpp
ism/extras/efl_wsc/isf_wsc_control_ui.h
ism/extras/efl_wsc/isf_wsc_efl.cpp

index 188c2cb..2b92035 100644 (file)
@@ -69,6 +69,7 @@ struct weescim
 
     Eina_Bool context_changed;
     Eina_Bool hw_kbd;
+    Eina_Bool return_key_disabled;
 
     WSCContextISF *wsc_ctx;
 };
index 7e5b739..975f6d7 100644 (file)
@@ -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);
+}
index 9408709..ba02ff5 100644 (file)
@@ -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
 }
index c7de444..b82bd14 100644 (file)
@@ -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