diff options
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 |