Update lookup table on backspace key in hanja mode
authorChoe Hwanjin <choe.hwanjin@gmail.com>
Sun, 8 Jan 2012 12:24:25 +0000 (21:24 +0900)
committerChoe Hwanjin <choe.hwanjin@gmail.com>
Sun, 8 Jan 2012 12:39:41 +0000 (21:39 +0900)
In hanja mode, lookup table should be hiden when the preedit text is
empty. Or lookup table will never be closed on backspace, because
ibus-hangul tries to look up hanja with surrounding text.

src/engine.c

index f2d7835..b061184 100644 (file)
@@ -965,6 +965,16 @@ ibus_hangul_engine_process_key_event (IBusEngine     *engine,
                 retval = TRUE;
             }
         }
+
+        ibus_hangul_engine_update_preedit_text (hangul);
+
+        if (hangul->hanja_mode) {
+            if (ibus_hangul_engine_has_preedit (hangul)) {
+                ibus_hangul_engine_update_lookup_table (hangul);
+            } else {
+                ibus_hangul_engine_hide_lookup_table (hangul);
+            }
+        }
     } else {
        // We need to normalize the keyval to US qwerty keylayout,
        // because the korean input method is depend on the position of
@@ -1024,16 +1034,16 @@ ibus_hangul_engine_process_key_event (IBusEngine     *engine,
                 ibus_engine_commit_text (engine, text);
             }
         }
-    }
 
-    ibus_hangul_engine_update_preedit_text (hangul);
+        ibus_hangul_engine_update_preedit_text (hangul);
 
-    if (hangul->hanja_mode) {
-        ibus_hangul_engine_update_lookup_table (hangul);
-    }
+        if (hangul->hanja_mode) {
+            ibus_hangul_engine_update_lookup_table (hangul);
+        }
 
-    if (!retval)
-        ibus_hangul_engine_flush (hangul);
+        if (!retval)
+            ibus_hangul_engine_flush (hangul);
+    }
 
     return retval;
 }