summaryrefslogtreecommitdiffstats
path: root/client/qt4/ibus-input-context.cpp
diff options
context:
space:
mode:
authorHuang Peng <shawn.p.huang@gmail.com>2008-08-18 10:01:36 +0800
committerHuang Peng <shawn.p.huang@gmail.com>2008-08-18 10:01:36 +0800
commitf1390a784766ccfc5903d54e9ae03553dac5273f (patch)
tree375be018153fb0d32065551855eb84e88c3cdc20 /client/qt4/ibus-input-context.cpp
parent8b5edb3da30ec604d1de12ea7e2bff47c4b2f6b1 (diff)
downloadibus-f1390a784766ccfc5903d54e9ae03553dac5273f.tar.gz
ibus-f1390a784766ccfc5903d54e9ae03553dac5273f.tar.xz
ibus-f1390a784766ccfc5903d54e9ae03553dac5273f.zip
Fix some problems.
Diffstat (limited to 'client/qt4/ibus-input-context.cpp')
-rw-r--r--client/qt4/ibus-input-context.cpp16
1 files changed, 13 insertions, 3 deletions
diff --git a/client/qt4/ibus-input-context.cpp b/client/qt4/ibus-input-context.cpp
index 44de61d..99d0cf0 100644
--- a/client/qt4/ibus-input-context.cpp
+++ b/client/qt4/ibus-input-context.cpp
@@ -28,7 +28,11 @@
typedef QInputMethodEvent::Attribute QAttribute;
IBusInputContext::IBusInputContext (QObject *parent, IBusClient *client, QString &ic)
- : QInputContext (parent), client (client), ic (ic), preedit_visible (false)
+ : QInputContext (parent),
+ client (client),
+ ic (ic),
+ preedit_visible (false),
+ has_focus (false)
{
}
@@ -132,9 +136,15 @@ IBusInputContext::setFocusWidget (QWidget *widget)
{
QInputContext::setFocusWidget (widget);
if (widget == NULL) {
+ has_focus = false;
client->focusOut (this);
}
else {
+ if (widget->inherits("KateViewInternal"))
+ client->setCapabilities (this, 0);
+ else
+ client->setCapabilities (this, 1);
+ has_focus = true;
client->focusIn (this);
update ();
}
@@ -151,8 +161,8 @@ IBusInputContext::widgetDestroyed (QWidget *widget)
bool
IBusInputContext::x11FilterEvent (QWidget *keywidget, XEvent *xevent)
{
- if (client->x11FilterEvent (this, keywidget, xevent))
- return true;
+ if (has_focus && client->x11FilterEvent (this, keywidget, xevent))
+ return true;
return QInputContext::x11FilterEvent (keywidget, xevent);
}
#endif