diff options
author | fujiwarat <takao.fujiwara1@gmail.com> | 2010-02-12 16:44:09 +0900 |
---|---|---|
committer | fujiwarat <takao.fujiwara1@gmail.com> | 2010-02-12 16:44:09 +0900 |
commit | 9f67c6def39759acefd5b877226a1b407685047c (patch) | |
tree | fb6f34846787b6acf5e3e895b5231b7d03fbc956 /engine | |
parent | 866a2668eb3d0f5fb237ca1b32f745b35935d968 (diff) | |
download | ibus-anthy-9f67c6def39759acefd5b877226a1b407685047c.tar.gz |
Fix crash with enabled global input method #564268
Diffstat (limited to 'engine')
-rw-r--r-- | engine/engine.py | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/engine/engine.py b/engine/engine.py index 0ceaa11..a983679 100644 --- a/engine/engine.py +++ b/engine/engine.py @@ -105,6 +105,7 @@ class Engine(ibus.EngineBase): self.__context._set_encoding(anthy.ANTHY_UTF8_ENCODING) # init state + self.__idle_id = 0 self.__input_mode = INPUT_MODE_HIRAGANA self.__prop_dict = {} @@ -130,7 +131,6 @@ class Engine(ibus.EngineBase): self.__preedit_ja_string = jastring.JaString(Engine.__typing_mode) self.__convert_chars = u"" self.__cursor_pos = 0 - self.__need_update = False self.__convert_mode = CONV_MODE_OFF self.__segments = list() self.__lookup_table.clean() @@ -140,6 +140,9 @@ class Engine(ibus.EngineBase): self._H = 0 self._RMM = 0 self._RSS = 0 + if self.__idle_id != 0: + gobject.source_remove(self.__idle_id) + self.__idle_id = 0 def __init_props(self): anthy_props = ibus.PropList() @@ -528,6 +531,12 @@ class Engine(ibus.EngineBase): elif mode == 1: self.__on_key_return() + def do_destroy(self): + if self.__idle_id != 0: + gobject.source_remove(self.__idle_id) + self.__idle_id = 0 + super(Engine,self).do_destroy() + # begine convert def __begin_anthy_convert(self): if self.__convert_mode == CONV_MODE_ANTHY: @@ -591,10 +600,10 @@ class Engine(ibus.EngineBase): def __invalidate(self): - if self.__need_update: + if self.__idle_id != 0: return - self.__need_update = True - gobject.idle_add(self.__update, priority = gobject.PRIORITY_LOW) + self.__idle_id = gobject.idle_add(self.__update, + priority = gobject.PRIORITY_LOW) # def __get_preedit(self): def __get_preedit(self, commit=False): @@ -701,11 +710,11 @@ class Engine(ibus.EngineBase): self.__lookup_table_visible) def __update(self): - self.__need_update = False if self.__convert_mode == CONV_MODE_OFF: self.__update_input_chars() else: self.__update_convert_chars() + self.__idle_id = 0 def __on_key_return(self): if self.__preedit_ja_string.is_empty(): |