Modified not to send unnecessary reset request 51/101051/2
authorJi-hoon Lee <dalton.lee@samsung.com>
Wed, 30 Nov 2016 06:47:02 +0000 (15:47 +0900)
committerJi-hoon Lee <dalton.lee@samsung.com>
Wed, 30 Nov 2016 07:53:04 +0000 (16:53 +0900)
Change-Id: I20f76896dbd305ea6c4c8bb68c5e0a5120c7be02

ism/extras/wayland_immodule/wayland_imcontext.c

index c3b7c72..63d1070 100644 (file)
@@ -1104,6 +1104,19 @@ clear_preedit(WaylandIMContext *imcontext)
     }
 }
 
+static Eina_Bool
+check_preedit_empty(WaylandIMContext *imcontext)
+{
+    if (!imcontext) return EINA_TRUE;
+
+    if (imcontext->preedit_text) return EINA_FALSE;
+    if (imcontext->preedit_attrs) return EINA_FALSE;
+    if (imcontext->preedit_cursor != 0) return EINA_FALSE;
+    if (imcontext->preedit_commit) return EINA_FALSE;
+
+    return EINA_TRUE;
+}
+
 static void
 text_input_commit_string(void                 *data,
                          struct wl_text_input *text_input EINA_UNUSED,
@@ -2387,12 +2400,14 @@ wayland_im_context_reset(Ecore_IMF_Context *ctx)
 
     if (!imcontext) return;
 
+    Eina_Bool preedit_empty = check_preedit_empty(imcontext);
+
     commit_preedit (imcontext);
     clear_preedit(imcontext);
 
     if (!imcontext->input) return;
 
-    if (imcontext->text_input) {
+    if (imcontext->text_input && !preedit_empty) {
         wl_text_input_reset(imcontext->text_input);
     }
     update_state(imcontext);