diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/client/qwaylanddisplay.cpp | 4 | ||||
-rw-r--r-- | src/client/qwaylanddisplay_p.h | 6 | ||||
-rw-r--r-- | src/client/qwaylandintegration.cpp | 2 |
3 files changed, 10 insertions, 2 deletions
diff --git a/src/client/qwaylanddisplay.cpp b/src/client/qwaylanddisplay.cpp index c75ede73..55043311 100644 --- a/src/client/qwaylanddisplay.cpp +++ b/src/client/qwaylanddisplay.cpp @@ -833,6 +833,10 @@ bool QWaylandDisplay::isKeyboardAvailable() const [](const QWaylandInputDevice *device) { return device->keyboard() != nullptr; }); } +bool QWaylandDisplay::isClientSideInputContextRequested() const { + return mClientSideInputContextRequested; +} + #if QT_CONFIG(cursor) QWaylandCursor *QWaylandDisplay::waylandCursor() diff --git a/src/client/qwaylanddisplay_p.h b/src/client/qwaylanddisplay_p.h index 3809de1e..473016f1 100644 --- a/src/client/qwaylanddisplay_p.h +++ b/src/client/qwaylanddisplay_p.h @@ -185,6 +185,7 @@ public: wl_event_queue *frameEventQueue() { return m_frameEventQueue; }; bool isKeyboardAvailable() const; + bool isClientSideInputContextRequested() const; void initEventThread(); @@ -275,7 +276,10 @@ private: struct wl_callback *mSyncCallback = nullptr; static const wl_callback_listener syncCallbackListener; - bool mClientSideInputContextRequested = !QPlatformInputContextFactory::requested().isNull(); + bool mClientSideInputContextRequested = [] () { + const QString& requested = QPlatformInputContextFactory::requested(); + return !requested.isEmpty() && requested != QLatin1String("wayland"); + }(); QStringList mTextInputManagerList; int mTextInputManagerIndex = INT_MAX; diff --git a/src/client/qwaylandintegration.cpp b/src/client/qwaylandintegration.cpp index 33d47e4c..ed04e403 100644 --- a/src/client/qwaylandintegration.cpp +++ b/src/client/qwaylandintegration.cpp @@ -476,7 +476,7 @@ void QWaylandIntegration::reconfigureInputContext() qCWarning(lcQpaWayland) << "qtvirtualkeyboard currently is not supported at client-side," " use QT_IM_MODULE=qtvirtualkeyboard at compositor-side."; - if (requested.isNull()) { + if (!mDisplay->isClientSideInputContextRequested()) { if (mDisplay->textInputMethodManager() != nullptr) mInputContext.reset(new QWaylandInputMethodContext(mDisplay.data())); #if QT_WAYLAND_TEXT_INPUT_V4_WIP |