diff options
author | Huang Peng <shawn.p.huang@gmail.com> | 2008-09-27 10:57:13 +0800 |
---|---|---|
committer | Huang Peng <shawn.p.huang@gmail.com> | 2008-09-27 10:57:13 +0800 |
commit | 76840784c9ccb4c5e6cabc37d67ae3d1acbfdab9 (patch) | |
tree | f27e58968879d6154333e0daea5e096f09787338 | |
parent | 8414a1287dfcf1d0179fb09911a99657588bd4e4 (diff) | |
parent | 9b481260aaa102070f0377050914d2e4d0031bbc (diff) | |
download | ibus-76840784c9ccb4c5e6cabc37d67ae3d1acbfdab9.tar.gz ibus-76840784c9ccb4c5e6cabc37d67ae3d1acbfdab9.tar.xz ibus-76840784c9ccb4c5e6cabc37d67ae3d1acbfdab9.zip |
Merge branch 'master' into implement_dbus
-rw-r--r-- | client/x11/main.c | 2 | ||||
-rw-r--r-- | daemon/config.py | 1 | ||||
-rw-r--r-- | daemon/connection.py | 6 | ||||
-rw-r--r-- | daemon/enginefactory.py | 13 | ||||
-rw-r--r-- | daemon/panel.py | 1 |
5 files changed, 14 insertions, 9 deletions
diff --git a/client/x11/main.c b/client/x11/main.c index e448bc5..3fd942c 100644 --- a/client/x11/main.c +++ b/client/x11/main.c @@ -496,7 +496,7 @@ _xim_forward_gdk_event (GdkEventKey *event, X11IC *x11ic) xkp.xkey.type = (event->type == GDK_KEY_PRESS) ? KeyPress : KeyRelease; xkp.xkey.serial = 0L; xkp.xkey.send_event = False; - xkp.xkey.same_screen = False; + xkp.xkey.same_screen = True; xkp.xkey.display = GDK_DISPLAY(); xkp.xkey.window = x11ic->focus_window ? x11ic->focus_window : x11ic->client_window; xkp.xkey.subwindow = None; diff --git a/daemon/config.py b/daemon/config.py index 2264e57..3b65442 100644 --- a/daemon/config.py +++ b/daemon/config.py @@ -71,6 +71,7 @@ class Config(ibus.Object): self.emit("value-changed", args[0], args[1]) else: return False + ibusconn.stop_emission("dbus-signal") return True gobject.type_register(Config) diff --git a/daemon/connection.py b/daemon/connection.py index 8f65b12..88a6a4c 100644 --- a/daemon/connection.py +++ b/daemon/connection.py @@ -26,8 +26,8 @@ import gobject class Connection(ibus.Object): __gsignals__ = { "dbus-signal" : ( - gobject.SIGNAL_RUN_FIRST, - gobject.TYPE_NONE, + gobject.SIGNAL_RUN_LAST, + gobject.TYPE_BOOLEAN, (gobject.TYPE_PYOBJECT, ) ) } @@ -63,7 +63,7 @@ class Connection(ibus.Object): self.__dbusconn = None def dispatch_dbus_signal(self, message): - self.emit("dbus-signal", message) + return self.emit("dbus-signal", message) def config_add_watch(self, key): if key in self.__config_watch: diff --git a/daemon/enginefactory.py b/daemon/enginefactory.py index 2234495..5ef6cc6 100644 --- a/daemon/enginefactory.py +++ b/daemon/enginefactory.py @@ -31,9 +31,9 @@ class EngineFactory(ibus.Object): self._object_path = object_path self._factory = self._ibusconn.get_object(self._object_path) - self._ibusconn.connect("destroy", self._ibusconn_destroy_cb) + self._ibusconn.connect("destroy", self.__ibusconn_destroy_cb) - self._ibusconn.connect("dbus-signal", self._dbus_signal_cb) + self._ibusconn.connect("dbus-signal", self.__dbus_signal_cb) self._engines = weakref.WeakValueDictionary() self._info = None @@ -57,13 +57,16 @@ class EngineFactory(ibus.Object): self._ibusconn = None self._factory = None - def _ibusconn_destroy_cb(self, ibusconn): + def __ibusconn_destroy_cb(self, ibusconn): self.destroy() - def _dbus_signal_cb(self, ibusconn, message): + def __dbus_signal_cb(self, ibusconn, message): object_path = message.get_path() if object_path in self._engines: - self._engines[object_path].handle_dbus_signal(message) + if self._engines[object_path].handle_dbus_signal(message): + ibusconn.stop_emission("dbus-signal") + return True + return False # methods for cmp def __lt__(self, other): diff --git a/daemon/panel.py b/daemon/panel.py index fdee8fe..f1076cd 100644 --- a/daemon/panel.py +++ b/daemon/panel.py @@ -169,6 +169,7 @@ class Panel(ibus.Object): self.emit("property-hide", args[0]) else: return False + ibusconn.stop_emission("dbus-signal") return True # methods for cmp |