summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/client/qwaylanddisplay.cpp4
-rw-r--r--src/client/qwaylanddisplay_p.h6
-rw-r--r--src/client/qwaylandintegration.cpp2
-rw-r--r--tests/auto/client/inputcontext/tst_inputcontext.cpp3
4 files changed, 12 insertions, 3 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
diff --git a/tests/auto/client/inputcontext/tst_inputcontext.cpp b/tests/auto/client/inputcontext/tst_inputcontext.cpp
index 9e3d75e0..9bcfa9e7 100644
--- a/tests/auto/client/inputcontext/tst_inputcontext.cpp
+++ b/tests/auto/client/inputcontext/tst_inputcontext.cpp
@@ -98,8 +98,9 @@ void tst_inputcontext::selectingInputContext_data()
// Test compositor with Text Input extension
QTest::newRow("ibus:text-input") << QByteArray("ibus") << mIbusModule;
QTest::newRow("compose:text-input") << QByteArray("compose") << mComposeModule;
- QTest::newRow("empty:text-input") << QByteArray("") << mComposeModule;
+ QTest::newRow("empty:text-input") << QByteArray("") << mTextInputModule;
QTest::newRow("null:text-input") << QByteArray() << mTextInputModule;
+ QTest::newRow("wayland:text-input") << QByteArray("wayland") << mTextInputModule;
QTest::newRow("fake:text-input") << QByteArray("fake") << mComposeModule;
}