Only store prev pressed key if the keyevent is ignored by editors.
authorPeng Huang <shawn.p.huang@gmail.com>
Tue, 6 Apr 2010 08:44:33 +0000 (16:44 +0800)
committerPeng Huang <shawn.p.huang@gmail.com>
Tue, 6 Apr 2010 08:44:33 +0000 (16:44 +0800)
src/PinyinEngine.cc
src/PinyinEngine.h

index bda3d58..e3eb3d3 100644 (file)
@@ -21,7 +21,7 @@ namespace PY {
 /* constructor */
 PinyinEngine::PinyinEngine (IBusEngine *engine)
     : m_engine (engine),
-      m_prev_pressed_key (0),
+      m_prev_pressed_key (IBUS_VoidSymbol),
       m_input_mode (MODE_INIT),
       m_fallback_editor (m_props)
 {
@@ -120,7 +120,7 @@ PinyinEngine::processKeyEvent (guint keyval, guint keycode, guint modifiers)
         retval = m_fallback_editor.processKeyEvent (keyval, keycode, modifiers);
 
     /* store ignored key event by editors */
-    m_prev_pressed_key = keyval;
+    m_prev_pressed_key = retval ? IBUS_VoidSymbol : keyval;
 
     return retval;
 }
index a478618..23e1a6b 100644 (file)
@@ -26,6 +26,7 @@ public:
     }
 
     void reset (gboolean need_update = TRUE) {
+        m_prev_pressed_key = IBUS_VoidSymbol;
         m_input_mode = MODE_INIT;
         for (gint i = 0; i < MODE_LAST; i++) {
             m_editors[i]->reset ();