diff options
author | Friedemann Kleint <Friedemann.Kleint@theqtcompany.com> | 2015-07-08 16:29:19 +0200 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@theqtcompany.com> | 2015-07-09 05:05:42 +0000 |
commit | fbfaf6a7bc7575c1f4c1fa589ffe97a6127e58bd (patch) | |
tree | 9373e693546728c78468bcf7f22fb1ffd161cef6 /src/virtualkeyboard/plugin.cpp | |
parent | 90510c78e226ff61aba00821606292eab2df122e (diff) |
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 <jarkko.koivikko@code-q.fi>
Reviewed-by: Mitch Curtis <mitch.curtis@digia.com>
Diffstat (limited to 'src/virtualkeyboard/plugin.cpp')
-rw-r--r-- | src/virtualkeyboard/plugin.cpp | 9 |
1 files changed, 8 insertions, 1 deletions
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> 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<DeclarativeInputContext>("QtQuick.Enterprise.VirtualKeyboard", 1, 0, "InputContext", createInputContextModule); qmlRegisterUncreatableType<DeclarativeInputEngine>("QtQuick.Enterprise.VirtualKeyboard", 1, 0, "InputEngine", "Cannot create input method engine"); qmlRegisterUncreatableType<DeclarativeShiftHandler>("QtQuick.Enterprise.VirtualKeyboard", 1, 0, "ShiftHandler", "Cannot create shift handler"); |