diff options
author | Weng Xuetian <wengxt@gmail.com> | 2022-06-16 19:46:59 -0700 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2022-07-13 18:05:03 +0000 |
commit | 3998df839238b141056d5233fcccf15be933b15d (patch) | |
tree | 3708df98e8d805cd6f87f43796e9ea502b50b855 /src/client | |
parent | fad1c7827b86f9e3b8e31bc45cc1e15355f902c3 (diff) | |
download | qtwayland-3998df839238b141056d5233fcccf15be933b15d.tar.gz |
Also use text-input if QT_IM_MODULE is empty or "wayland"
Previously, text input can only be used when only when QT_IM_MODULE is
unset, it is counter-intuitive when empty and null has different meaning.
Additionally making "wayland" to use text input to make it easier to enforce
wayland context. Gtk's relevant value is also "wayland" so it will be more
consistent.
Change-Id: I39b8c899b0ab7965d4b17ca29ed9eadc14f17e88
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
Reviewed-by: Aleix Pol Gonzalez <aleixpol@kde.org>
(cherry picked from commit 07dd6afa70cab374958468a45098a9b3ee57819f)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
Diffstat (limited to 'src/client')
-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 |