diff options
author | hidegit <abe.sendai@gmail.com> | 2010-02-07 20:15:31 +0900 |
---|---|---|
committer | fujiwarat <takao.fujiwara1@gmail.com> | 2010-02-12 10:24:12 +0900 |
commit | afde33eb8a14d7922e475a967d66ba230c519af0 (patch) | |
tree | 948c9bbf5470883b47f753696062fccefbf839fe /engine | |
parent | 660f970b03ef188a37f0a00e2598c1721b7a9bd8 (diff) | |
download | ibus-anthy-afde33eb8a14d7922e475a967d66ba230c519af0.tar.gz |
Fix chattering bug.
http://okuma-shinkan.cocolog-nifty.com/newshinkan/2009/12/ibus-8ee9.html
Diffstat (limited to 'engine')
-rw-r--r-- | engine/engine.py | 31 |
1 files changed, 25 insertions, 6 deletions
diff --git a/engine/engine.py b/engine/engine.py index c5841cb..023d4d9 100644 --- a/engine/engine.py +++ b/engine/engine.py @@ -138,6 +138,8 @@ class Engine(ibus.EngineBase): self._MM = 0 self._SS = 0 self._H = 0 + self._RMM = 0 + self._RSS = 0 def __init_props(self): anthy_props = ibus.PropList() @@ -1089,6 +1091,7 @@ class Engine(ibus.EngineBase): def insert(keyval): try: + self._MM = self._SS = 0 ret = self.__on_key_common(ord(keyval)) if (keyval in u',.、。' and self.__prefs.get_value('common', 'behavior_on_period')): @@ -1138,6 +1141,10 @@ class Engine(ibus.EngineBase): if stop(): cmd_exec([0, RS(), LS()][self._SS]) self._SS = 0 + if keyval in [RS(), LS()]: + self._RSS = 0 + elif keyval == self._RMM: + self._RMM = 0 else: if keyval in [LS(), RS()] and state == 0: if self._SS: @@ -1147,10 +1154,16 @@ class Engine(ibus.EngineBase): start(T1()) elif self._MM: stop() + self._RMM = self._MM + self._RSS = 1 if keyval == RS() else 2 insert(thumb.table[self._MM][1 if keyval == RS() else 2]) else: - self._SS = 1 if keyval == RS() else 2 - start(T1()) + if self._RSS == (1 if keyval == RS() else 2): + if self._RMM: + insert(thumb.table[self._RMM][self._RSS]) + else: + self._SS = 1 if keyval == RS() else 2 + start(T1()) elif keyval in thumb.table.keys() and state == 0: if self._MM: stop() @@ -1159,12 +1172,18 @@ class Engine(ibus.EngineBase): self._MM = keyval elif self._SS: stop() + self._RMM = keyval + self._RSS = self._SS insert(thumb.table[keyval][self._SS]) else: - if cmd_exec(keyval, state): - return True - start(T2()) - self._MM = keyval + if self._RMM == keyval: + if self._RSS: + insert(thumb.table[self._RMM][self._RSS]) + else: + if cmd_exec(keyval, state): + return True + start(T2()) + self._MM = keyval else: if self._MM: stop() |