From 388d6e0f8005f4fdbf2a61cf713e1cf9cb16bf29 Mon Sep 17 00:00:00 2001 From: Pekka Vuorela Date: Thu, 29 Mar 2012 16:40:10 +0300 Subject: Adapt Maliit input context to new input method interfaces Change-Id: Ia395dbb1689d1c37ef588c49cbb55ad1979f532f Reviewed-by: Simon Hausmann --- .../maliit/qmaliitplatforminputcontext.cpp | 56 ++++++++-------------- .../maliit/qmaliitplatforminputcontext.h | 3 +- 2 files changed, 22 insertions(+), 37 deletions(-) (limited to 'src/plugins/platforminputcontexts') diff --git a/src/plugins/platforminputcontexts/maliit/qmaliitplatforminputcontext.cpp b/src/plugins/platforminputcontexts/maliit/qmaliitplatforminputcontext.cpp index dbb4e6e650..882aae286e 100644 --- a/src/plugins/platforminputcontexts/maliit/qmaliitplatforminputcontext.cpp +++ b/src/plugins/platforminputcontexts/maliit/qmaliitplatforminputcontext.cpp @@ -182,8 +182,6 @@ QMaliitPlatformInputContext::QMaliitPlatformInputContext() { if (debug) qDebug() << "QMaliitPlatformInputContext::QMaliitPlatformInputContext()"; - QInputMethod *im = qApp->inputMethod(); - connect(im, SIGNAL(inputItemChanged()), this, SLOT(inputItemChanged())); } QMaliitPlatformInputContext::~QMaliitPlatformInputContext(void) @@ -198,8 +196,7 @@ bool QMaliitPlatformInputContext::isValid() const void QMaliitPlatformInputContext::invokeAction(QInputMethod::Action action, int x) { - QObject *input = qApp->inputMethod()->inputItem(); - if (!input) + if (!inputMethodAccepted()) return; if (action == QInputMethod::Click) { @@ -220,14 +217,12 @@ void QMaliitPlatformInputContext::invokeAction(QInputMethod::Action action, int void QMaliitPlatformInputContext::reset() { - QObject *input = qApp->inputMethod()->inputItem(); - const bool hadPreedit = !d->preedit.isEmpty(); - if (hadPreedit && input) { + if (hadPreedit && inputMethodAccepted()) { // ### selection QInputMethodEvent event; event.setCommitString(d->preedit); - QGuiApplication::sendEvent(input, &event); + QGuiApplication::sendEvent(qGuiApp->focusObject(), &event); d->preedit.clear(); } @@ -238,13 +233,11 @@ void QMaliitPlatformInputContext::reset() void QMaliitPlatformInputContext::update(Qt::InputMethodQueries queries) { - QInputMethod *method = qApp->inputMethod(); - QObject *input = method->inputItem(); - if (!input) + if (!qGuiApp->focusObject()) return; QInputMethodQueryEvent query(queries); - QGuiApplication::sendEvent(input, &query); + QGuiApplication::sendEvent(qGuiApp->focusObject(), &query); if (queries & Qt::ImSurroundingText) d->imState["surroundingText"] = query.value(Qt::ImSurroundingText); @@ -254,8 +247,8 @@ void QMaliitPlatformInputContext::update(Qt::InputMethodQueries queries) d->imState["anchorPosition"] = query.value(Qt::ImAnchorPosition); if (queries & Qt::ImCursorRectangle) { QRect rect = query.value(Qt::ImCursorRectangle).toRect(); - rect = method->inputItemTransform().mapRect(rect); - QWindow *window = method->inputWindow(); + rect = qGuiApp->inputMethod()->inputItemTransform().mapRect(rect); + QWindow *window = qGuiApp->focusWindow(); if (window) d->imState["cursorRectangle"] = QRect(window->mapToGlobal(rect.topLeft()), rect.size()); } @@ -289,8 +282,7 @@ void QMaliitPlatformInputContext::activationLostEvent() void QMaliitPlatformInputContext::commitString(const QString &string, int replacementStart, int replacementLength, int /* cursorPos */) { - QObject *input = qApp->inputMethod()->inputItem(); - if (!input) + if (!inputMethodAccepted()) return; d->preedit.clear(); @@ -300,13 +292,12 @@ void QMaliitPlatformInputContext::commitString(const QString &string, int replac // ### start/cursorPos QInputMethodEvent event; event.setCommitString(string, replacementStart, replacementLength); - QCoreApplication::sendEvent(input, &event); + QCoreApplication::sendEvent(qGuiApp->focusObject(), &event); } void QMaliitPlatformInputContext::updatePreedit(const QDBusMessage &message) { - QObject *input = qApp->inputMethod()->inputItem(); - if (!input) + if (!inputMethodAccepted()) return; QList arguments = message.arguments(); @@ -375,7 +366,7 @@ void QMaliitPlatformInputContext::updatePreedit(const QDBusMessage &message) QInputMethodEvent event(d->preedit, attributes); if (replacementStart || replacementLength) event.setCommitString(QString(), replacementStart, replacementLength); - QCoreApplication::sendEvent(input, &event); + QCoreApplication::sendEvent(qGuiApp->focusObject(), &event); } void QMaliitPlatformInputContext::copy() @@ -435,12 +426,11 @@ bool QMaliitPlatformInputContext::selection(QString &selection) { selection.clear(); - QObject *input = qApp->inputMethod()->inputItem(); - if (!input) + if (!inputMethodAccepted()) return false; QInputMethodQueryEvent query(Qt::ImCurrentSelection); - QGuiApplication::sendEvent(input, &query); + QGuiApplication::sendEvent(qGuiApp->focusObject(), &query); QVariant value = query.value(Qt::ImCurrentSelection); if (!value.isValid()) return false; @@ -471,14 +461,13 @@ void QMaliitPlatformInputContext::setRedirectKeys(bool) void QMaliitPlatformInputContext::setSelection(int start, int length) { - QObject *input = qApp->inputMethod()->inputItem(); - if (!input) + if (!inputMethodAccepted()) return; QList attributes; attributes << QInputMethodEvent::Attribute(QInputMethodEvent::Selection, start, length, QVariant()); QInputMethodEvent event(QString(), attributes); - QGuiApplication::sendEvent(input, &event); + QGuiApplication::sendEvent(qGuiApp->focusObject(), &event); } void QMaliitPlatformInputContext::updateInputMethodArea(int x, int y, int width, int height) @@ -492,14 +481,12 @@ void QMaliitPlatformInputContext::updateServerWindowOrientation(Qt::ScreenOrient d->server->appOrientationChanged(orientationAngle(orientation)); } -void QMaliitPlatformInputContext::inputItemChanged() +void QMaliitPlatformInputContext::setFocusObject(QObject *object) { if (!d->valid) return; - QInputMethod *method = qApp->inputMethod(); - QObject *input = method->inputItem(); - QWindow *window = method->inputWindow(); + QWindow *window = qGuiApp->focusWindow(); if (window != d->window.data()) { if (d->window) disconnect(d->window.data(), SIGNAL(contentOrientationChanged(Qt::ScreenOrientation)), @@ -510,8 +497,8 @@ void QMaliitPlatformInputContext::inputItemChanged() this, SLOT(updateServerWindowOrientation(Qt::ScreenOrientation))); } - d->imState["focusState"] = input != 0; - if (input) { + d->imState["focusState"] = (object != 0); + if (inputMethodAccepted()) { if (window) d->imState["winId"] = static_cast(window->winId()); @@ -524,7 +511,7 @@ void QMaliitPlatformInputContext::inputItemChanged() } } d->sendStateUpdate(/*focusChanged*/true); - if (input && window && d->visibility == InputPanelShowRequested) + if (inputMethodAccepted() && window && d->visibility == InputPanelShowRequested) showInputPanel(); } @@ -533,8 +520,7 @@ void QMaliitPlatformInputContext::showInputPanel() if (debug) qDebug() << "showInputPanel"; - QInputMethod *method = qApp->inputMethod(); - if (!method->inputItem() || !method->inputWindow()) + if (!inputMethodAccepted()) d->visibility = InputPanelShowRequested; else { d->server->showInputMethod(); diff --git a/src/plugins/platforminputcontexts/maliit/qmaliitplatforminputcontext.h b/src/plugins/platforminputcontexts/maliit/qmaliitplatforminputcontext.h index a17abe7cbb..2612524619 100644 --- a/src/plugins/platforminputcontexts/maliit/qmaliitplatforminputcontext.h +++ b/src/plugins/platforminputcontexts/maliit/qmaliitplatforminputcontext.h @@ -67,10 +67,9 @@ public: virtual void showInputPanel(); virtual void hideInputPanel(); virtual bool isInputPanelVisible() const; + void setFocusObject(QObject *object); public Q_SLOTS: - void inputItemChanged(); - void activationLostEvent(); void commitString(const QString &in0, int in1, int in2, int in3); void updatePreedit(const QDBusMessage &message); -- cgit v1.2.3