void QMaliitPlatformInputContext::setFocusObject(QObject *object) { if (!d->valid) return; QWindow *window = qGuiApp->focusWindow(); if (window != d->window.data()) { if (d->window) disconnect(d->window.data(), SIGNAL(contentOrientationChanged(Qt::ScreenOrientation)), this, SLOT(updateServerWindowOrientation(Qt::ScreenOrientation))); d->window = window; if (d->window) connect(d->window.data(), SIGNAL(contentOrientationChanged(Qt::ScreenOrientation)), this, SLOT(updateServerWindowOrientation(Qt::ScreenOrientation))); } d->imState["focusState"] = (object != 0); if (inputMethodAccepted()) { if (window) d->imState["winId"] = static_cast<qulonglong>(window->winId()); if (!d->active) { d->active = true; d->server->activateContext(); if (window) d->server->appOrientationChanged(orientationAngle(window->contentOrientation())); } } d->sendStateUpdate(/*focusChanged*/true); if (inputMethodAccepted() && window && d->visibility == InputPanelShowRequested) showInputPanel(); }
void MInputContext::setFocusObject(QObject *focused) { if (debug) qDebug() << InputContextName << "in" << __PRETTY_FUNCTION__ << focused; updateInputMethodExtensions(); QWindow *newFocusWindow = qGuiApp->focusWindow(); if (newFocusWindow != window.data()) { if (window) { disconnect(window.data(), SIGNAL(contentOrientationChanged(Qt::ScreenOrientation)), this, SLOT(updateServerOrientation(Qt::ScreenOrientation))); } window = newFocusWindow; if (window) { connect(window.data(), SIGNAL(contentOrientationChanged(Qt::ScreenOrientation)), this, SLOT(updateServerOrientation(Qt::ScreenOrientation))); updateServerOrientation(window->contentOrientation()); } } bool oldAcceptInput = currentFocusAcceptsInput; currentFocusAcceptsInput = inputMethodAccepted(); if (!active && currentFocusAcceptsInput) { imServer->activateContext(); active = true; updateServerOrientation(newFocusWindow->contentOrientation()); } if (active && (currentFocusAcceptsInput || oldAcceptInput)) { const QMap<QString, QVariant> stateInformation = getStateInformation(); imServer->updateWidgetInformation(stateInformation, true); } if (inputPanelState == InputPanelShowPending && currentFocusAcceptsInput) { sipHideTimer.stop(); imServer->showInputMethod(); inputPanelState = InputPanelShown; } }