diff options
author | fujiwarat <takao.fujiwara1@gmail.com> | 2012-09-11 19:01:06 +0900 |
---|---|---|
committer | fujiwarat <takao.fujiwara1@gmail.com> | 2012-09-11 19:05:47 +0900 |
commit | 6a86f52e21e6893beee2a7d9f747a0326dc0ba86 (patch) | |
tree | 2b5a2eef3da4c5f4d1fd14128dccd06a650274bc /setup | |
parent | a3b1609171b3ab44a640b0675177cf6ae2ea840d (diff) | |
download | ibus-anthy-6a86f52e21e6893beee2a7d9f747a0326dc0ba86.tar.gz |
Fixed IBus.Bus.get_config is null. (#848023)
Now im-ibus.so uses ibus_bus_new_async() instead of ibus_bus_new()
and then if ibus-setup-anthy calls GTK+ UI before ibus_bus_new(),
the async function is called instead and the delay is happened with
the latest ibus 1.5.
The fix is to call ibus_bus_new() before GTK+.
Diffstat (limited to 'setup')
-rw-r--r-- | setup/main.py | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/setup/main.py b/setup/main.py index 5811976..80815c0 100644 --- a/setup/main.py +++ b/setup/main.py @@ -61,19 +61,39 @@ class AnthySetup(object): pass gettext.bindtextdomain(DOMAINNAME, config.LOCALEDIR) gettext.bind_textdomain_codeset(DOMAINNAME, 'UTF-8') + + # IBus.Bus() calls ibus_bus_new(). + # Gtk.Builder().add_from_file() also calls ibus_bus_new_async() + # via ibus_im_context_new(). + # Then if IBus.Bus() is called after Gtk.Builder().add_from_file(), + # the connection delay would be happened without an async + # finish function. + ibus_address = IBus.get_address() + bus = None + if ibus_address != None: + bus = IBus.Bus(connect_async='True') + builder_file = path.join(path.dirname(__file__), 'setup.ui') self.__builder = builder = Gtk.Builder() builder.set_translation_domain(DOMAINNAME) builder.add_from_file(builder_file) - if IBus.get_address() == None: + if ibus_address == None: builder.connect_signals(self) # self.__run_message_dialog needs self.__builder. self.__run_message_dialog(_("ibus is not running."), Gtk.MessageType.ERROR) return - self.__config = IBus.Bus().get_config() + if bus.is_connected(): + self.__init_bus_connected() + else: + bus.connect('connected', self.__init_bus_connected) + + def __init_bus_connected(self, bus): + self.__config = bus.get_config() + builder = self.__builder + self.__thumb_kb_layout_mode = None self.__thumb_kb_layout = None self.__japanese_ordered_dict = {} |