diff options
author | Huang Peng <shawn.p.huang@gmail.com> | 2008-08-18 10:01:36 +0800 |
---|---|---|
committer | Huang Peng <shawn.p.huang@gmail.com> | 2008-08-18 10:01:36 +0800 |
commit | f1390a784766ccfc5903d54e9ae03553dac5273f (patch) | |
tree | 375be018153fb0d32065551855eb84e88c3cdc20 /client/qt4/ibus-input-context.cpp | |
parent | 8b5edb3da30ec604d1de12ea7e2bff47c4b2f6b1 (diff) | |
download | ibus-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.cpp | 16 |
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 |