summaryrefslogtreecommitdiff
path: root/setup
diff options
context:
space:
mode:
authorfujiwarat <takao.fujiwara1@gmail.com>2012-09-11 19:01:06 +0900
committerfujiwarat <takao.fujiwara1@gmail.com>2012-09-11 19:05:47 +0900
commit6a86f52e21e6893beee2a7d9f747a0326dc0ba86 (patch)
tree2b5a2eef3da4c5f4d1fd14128dccd06a650274bc /setup
parenta3b1609171b3ab44a640b0675177cf6ae2ea840d (diff)
downloadibus-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.py24
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 = {}