summaryrefslogtreecommitdiffstats
path: root/src/client
diff options
context:
space:
mode:
authorWeng Xuetian <wengxt@gmail.com>2022-06-16 19:46:59 -0700
committerWeng Xuetian <wengxt@gmail.com>2022-07-13 10:07:04 -0700
commit07dd6afa70cab374958468a45098a9b3ee57819f (patch)
tree00daa3e47b275b3e6aa828c32153017bd2e062bd /src/client
parentbaed02440c1919cf6a535bec0c8a2492eab45a76 (diff)
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. Pick-to: 6.4 6.3 6.2 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>
Diffstat (limited to 'src/client')
-rw-r--r--src/client/qwaylanddisplay.cpp4
-rw-r--r--src/client/qwaylanddisplay_p.h6
-rw-r--r--src/client/qwaylandintegration.cpp2
3 files changed, 10 insertions, 2 deletions
diff --git a/src/client/qwaylanddisplay.cpp b/src/client/qwaylanddisplay.cpp
index c75ede732..550433115 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 3809de1ea..473016f1e 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 a874c55a3..6d74de13b 100644
--- a/src/client/qwaylandintegration.cpp
+++ b/src/client/qwaylandintegration.cpp
@@ -479,7 +479,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