aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJarkko Koivikko <jarkko.koivikko@code-q.fi>2021-06-15 11:34:00 +0300
committerJarkko Koivikko <jarkko.koivikko@code-q.fi>2021-06-15 13:28:19 +0300
commit71d67571cf5708315abfe39fe5f2be26764b7bd2 (patch)
treee36b564728c6d641d553963e8e6356ddcb51c77d /src
parent63a944ff12580f2c333a162ecaecd12419a39c10 (diff)
Disable Windows IME when Qt Virtual Keyboard plugin is loaded
Windows IME (TSF) causes a crash when used together with Qt Virtual Keyboard. [ChangeLog] Disable Windows IME when Qt Virtual Keyboard plugin is loaded Fixes: QTBUG-93042 Pick-to: 6.2 6.1 5.15 Change-Id: If3d4d192147b316e198fc060863c615c12f7a3a1 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Diffstat (limited to 'src')
-rw-r--r--src/plugin/CMakeLists.txt5
-rw-r--r--src/plugin/plugin.cpp9
2 files changed, 14 insertions, 0 deletions
diff --git a/src/plugin/CMakeLists.txt b/src/plugin/CMakeLists.txt
index aeb6e143..32042e08 100644
--- a/src/plugin/CMakeLists.txt
+++ b/src/plugin/CMakeLists.txt
@@ -40,6 +40,11 @@ qt_internal_extend_target(QVirtualKeyboardPlugin CONDITION disable-layouts
QT_VIRTUALKEYBOARD_DISABLE_LAYOUTS
)
+qt_internal_extend_target(QVirtualKeyboardPlugin CONDITION WIN32
+ LIBRARIES
+ Imm32.lib
+)
+
#### Keys ignored in scope 4:.:.:plugin.pro:WIN32:
# QMAKE_TARGET_DESCRIPTION = "Virtual Keyboard for Qt."
# QMAKE_TARGET_PRODUCT = "Qt Virtual Keyboard (Qt $$QT_VERSION)"
diff --git a/src/plugin/plugin.cpp b/src/plugin/plugin.cpp
index 4e42ee1b..5976fccf 100644
--- a/src/plugin/plugin.cpp
+++ b/src/plugin/plugin.cpp
@@ -34,6 +34,9 @@
#include <QtVirtualKeyboard/private/qvirtualkeyboard_staticplugin_p.h>
#include <QLoggingCategory>
#include <QtQml>
+#if defined(Q_OS_WIN)
+#include <qt_windows.h>
+#endif
QT_BEGIN_NAMESPACE
@@ -73,6 +76,12 @@ QPlatformInputContext *QVirtualKeyboardPlugin::create(const QString &system, con
if (system.compare(system, QLatin1String(pluginName), Qt::CaseInsensitive) != 0)
return Q_NULLPTR;
+
+#if defined(Q_OS_WIN)
+ // QTBUG-93042
+ ImmDisableIME(0);
+#endif
+
PlatformInputContext *platformInputContext = new PlatformInputContext();
QStringList inputMethodList;