From fbfaf6a7bc7575c1f4c1fa589ffe97a6127e58bd Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Wed, 8 Jul 2015 16:29:19 +0200 Subject: Disable creation of plugin unless QT_IM_MODULE is set to "qtvirtualkeyboard". In order to use it, the environment variable must be explicitly set. Otherwise, the plugin is pulled and activated by any Qt application. The behavior now matches the documentation. Task-number: QTRD-3660 Task-number: QTBUG-47099 Change-Id: Iaa09c7646bfe6c4de898ba03940af3de2fb3d4a7 Reviewed-by: Jarkko Koivikko Reviewed-by: Mitch Curtis --- src/virtualkeyboard/plugin.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'src/virtualkeyboard/plugin.cpp') diff --git a/src/virtualkeyboard/plugin.cpp b/src/virtualkeyboard/plugin.cpp index 31b66481..db079f88 100644 --- a/src/virtualkeyboard/plugin.cpp +++ b/src/virtualkeyboard/plugin.cpp @@ -43,6 +43,9 @@ #include "declarativesettings.h" #include "declarativetrace.h" +static const char pluginName[] = "qtvirtualkeyboard"; +static const char inputMethodEnvVarName[] = "QT_IM_MODULE"; + static QPointer platformInputContext; static QObject *createInputContextModule(QQmlEngine *engine, QJSEngine *scriptEngine) @@ -72,7 +75,7 @@ static QObject *createInputContextModule(QQmlEngine *engine, QJSEngine *scriptEn QStringList PlatformInputContextPlugin::keys() const { - return QStringList(QStringLiteral("qtvirtualkeyboard")); + return QStringList(QLatin1String(pluginName)); } QPlatformInputContext *PlatformInputContextPlugin::create(const QString &system, const QStringList ¶mList) @@ -81,6 +84,10 @@ QPlatformInputContext *PlatformInputContextPlugin::create(const QString &system, Q_INIT_RESOURCE(content); Q_INIT_RESOURCE(default_style); Q_INIT_RESOURCE(retro_style); + + if (!qEnvironmentVariableIsSet(inputMethodEnvVarName) || qgetenv(inputMethodEnvVarName) != pluginName) + return Q_NULLPTR; + qmlRegisterSingletonType("QtQuick.Enterprise.VirtualKeyboard", 1, 0, "InputContext", createInputContextModule); qmlRegisterUncreatableType("QtQuick.Enterprise.VirtualKeyboard", 1, 0, "InputEngine", "Cannot create input method engine"); qmlRegisterUncreatableType("QtQuick.Enterprise.VirtualKeyboard", 1, 0, "ShiftHandler", "Cannot create shift handler"); -- cgit v1.2.3