summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHuang Peng <shawn.p.huang@gmail.com>2008-09-27 10:57:13 +0800
committerHuang Peng <shawn.p.huang@gmail.com>2008-09-27 10:57:13 +0800
commit76840784c9ccb4c5e6cabc37d67ae3d1acbfdab9 (patch)
treef27e58968879d6154333e0daea5e096f09787338
parent8414a1287dfcf1d0179fb09911a99657588bd4e4 (diff)
parent9b481260aaa102070f0377050914d2e4d0031bbc (diff)
downloadibus-76840784c9ccb4c5e6cabc37d67ae3d1acbfdab9.tar.gz
ibus-76840784c9ccb4c5e6cabc37d67ae3d1acbfdab9.tar.xz
ibus-76840784c9ccb4c5e6cabc37d67ae3d1acbfdab9.zip
Merge branch 'master' into implement_dbus
-rw-r--r--client/x11/main.c2
-rw-r--r--daemon/config.py1
-rw-r--r--daemon/connection.py6
-rw-r--r--daemon/enginefactory.py13
-rw-r--r--daemon/panel.py1
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