summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforminputcontexts/ibus/qibusplatforminputcontext.cpp
diff options
context:
space:
mode:
authorPekka Vuorela <pekka.ta.vuorela@nokia.com>2012-02-23 15:57:14 +0200
committerQt by Nokia <qt-info@nokia.com>2012-04-01 20:13:51 +0200
commit6a4bf73c07b034a0f9d07cb617d23e92ca778dd1 (patch)
tree818497855c1ad073919c214fa52ba3fd5b50d7d7 /src/plugins/platforminputcontexts/ibus/qibusplatforminputcontext.cpp
parent1f5e058f79f95e869d8de300596137463492056c (diff)
Added some convenience API for platform input contexts
QPlatformInputContext now gets notified on changed focus and has inputMethodAccepted() telling whether current focus object accepts input method events. Also adapted IBus plugin to use this. Key event filtering for focused objects without input method support got fixed by the change. Change-Id: I6910aa6af2459d752a5763f0ae88fa8c34e5b165 Reviewed-by: Joona Petrell <joona.t.petrell@nokia.com>
Diffstat (limited to 'src/plugins/platforminputcontexts/ibus/qibusplatforminputcontext.cpp')
-rw-r--r--src/plugins/platforminputcontexts/ibus/qibusplatforminputcontext.cpp19
1 files changed, 10 insertions, 9 deletions
diff --git a/src/plugins/platforminputcontexts/ibus/qibusplatforminputcontext.cpp b/src/plugins/platforminputcontexts/ibus/qibusplatforminputcontext.cpp
index 5579b4cd26..38fe0cce51 100644
--- a/src/plugins/platforminputcontexts/ibus/qibusplatforminputcontext.cpp
+++ b/src/plugins/platforminputcontexts/ibus/qibusplatforminputcontext.cpp
@@ -89,7 +89,6 @@ QIBusPlatformInputContext::QIBusPlatformInputContext ()
connect(d->context, SIGNAL(UpdatePreeditText(QDBusVariant,uint,bool)), this, SLOT(updatePreeditText(QDBusVariant,uint,bool)));
}
QInputMethod *p = qApp->inputMethod();
- connect(p, SIGNAL(inputItemChanged()), this, SLOT(inputItemChanged()));
connect(p, SIGNAL(cursorRectangleChanged()), this, SLOT(cursorRectChanged()));
}
@@ -130,7 +129,7 @@ void QIBusPlatformInputContext::commit()
if (!d->valid)
return;
- QObject *input = qApp->inputMethod()->inputItem();
+ QObject *input = qApp->focusObject();
if (!input) {
d->predit = QString();
return;
@@ -159,7 +158,7 @@ void QIBusPlatformInputContext::cursorRectChanged()
if(!r.isValid())
return;
- QWindow *inputWindow = qApp->inputMethod()->inputWindow();
+ QWindow *inputWindow = qApp->focusWindow();
if (!inputWindow)
return;
r.moveTopLeft(inputWindow->mapToGlobal(r.topLeft()));
@@ -168,15 +167,14 @@ void QIBusPlatformInputContext::cursorRectChanged()
d->context->SetCursorLocation(r.x(), r.y(), r.width(), r.height());
}
-void QIBusPlatformInputContext::inputItemChanged()
+void QIBusPlatformInputContext::setFocusObject(QObject *object)
{
if (!d->valid)
return;
- QObject *input = qApp->inputMethod()->inputItem();
if (debug)
- qDebug() << "setFocusObject" << input;
- if (input)
+ qDebug() << "setFocusObject" << object;
+ if (object)
d->context->FocusIn();
else
d->context->FocusOut();
@@ -184,7 +182,7 @@ void QIBusPlatformInputContext::inputItemChanged()
void QIBusPlatformInputContext::commitText(const QDBusVariant &text)
{
- QObject *input = qApp->inputMethod()->inputItem();
+ QObject *input = qApp->focusObject();
if (!input)
return;
@@ -206,7 +204,7 @@ void QIBusPlatformInputContext::commitText(const QDBusVariant &text)
void QIBusPlatformInputContext::updatePreeditText(const QDBusVariant &text, uint cursorPos, bool visible)
{
- QObject *input = qApp->inputMethod()->inputItem();
+ QObject *input = qApp->focusObject();
if (!input)
return;
@@ -254,6 +252,9 @@ QIBusPlatformInputContext::x11FilterEvent(uint keyval, uint keycode, uint state,
if (!d->valid)
return false;
+ if (!inputMethodAccepted())
+ return false;
+
if (!press)
return false;