diff options
author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2019-04-24 16:39:01 +0200 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2019-05-08 11:07:17 +0000 |
commit | 8a362d110a2376ba0b112621db67ee58b3bb5d87 (patch) | |
tree | 5505978df8212b784392d5c0df005f799a08dfff /src/windeployqt/main.cpp | |
parent | 72eac2f5f3d8ea839c915455e4eed66118d06505 (diff) |
windeployqt: Add option to disable deployment of the Virtual Keyboard
Add option to suppress the plugin itself and its dependent plugin directory.
Fixes: QTBUG-75272
Change-Id: I588e3842416939cd694f40d9b0d98d4773e06daa
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Diffstat (limited to 'src/windeployqt/main.cpp')
-rw-r--r-- | src/windeployqt/main.cpp | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/windeployqt/main.cpp b/src/windeployqt/main.cpp index f3c0e5fd7..00fa4fbc4 100644 --- a/src/windeployqt/main.cpp +++ b/src/windeployqt/main.cpp @@ -174,6 +174,10 @@ static QtModuleEntry qtModuleEntries[] = { { QtWebViewModule, "webview", "Qt5WebView", nullptr } }; +enum QtPlugin { + QtVirtualKeyboardPlugin = 0x1 +}; + static const char webKitProcessC[] = "QtWebProcess"; static const char webEngineProcessC[] = "QtWebEngineProcess"; @@ -260,6 +264,7 @@ struct Options { bool translations = true; bool systemD3dCompiler = true; bool compilerRunTime = false; + unsigned disabledPlugins = 0; AngleDetection angleDetection = AngleDetectionAuto; bool softwareRasterizer = true; Platform platform = WindowsDesktop; @@ -405,6 +410,10 @@ static inline int parseArguments(const QStringList &arguments, QCommandLineParse QStringLiteral("Deploy compiler runtime (Desktop only).")); parser->addOption(compilerRunTimeOption); + QCommandLineOption noVirtualKeyboardOption(QStringLiteral("no-virtualkeyboard"), + QStringLiteral("Disable deployment of the Virtual Keyboard.")); + parser->addOption(noVirtualKeyboardOption); + QCommandLineOption noCompilerRunTimeOption(QStringLiteral("no-compiler-runtime"), QStringLiteral("Do not deploy compiler runtime (Desktop only).")); parser->addOption(noCompilerRunTimeOption); @@ -499,6 +508,9 @@ static inline int parseArguments(const QStringList &arguments, QCommandLineParse return CommandLineParseError; } + if (parser->isSet(noVirtualKeyboardOption)) + options->disabledPlugins |= QtVirtualKeyboardPlugin; + if (parser->isSet(releaseWithDebugInfoOption)) std::wcerr << "Warning: " << releaseWithDebugInfoOption.names().first() << " is obsolete."; @@ -878,6 +890,7 @@ static quint64 qtModule(QString module, const QString &infix) } QStringList findQtPlugins(quint64 *usedQtModules, quint64 disabledQtModules, + unsigned disabledPlugins, const QString &qtPluginsDirName, const QString &libraryLocation, const QString &infix, DebugMatchMode debugMatchModeIn, Platform platform, QString *platformPlugin) @@ -897,6 +910,8 @@ QStringList findQtPlugins(quint64 *usedQtModules, quint64 disabledQtModules, : debugMatchModeIn; QDir subDir(subDirFi.absoluteFilePath()); // Filter out disabled plugins + if ((disabledPlugins & QtVirtualKeyboardPlugin) && subDirName == QLatin1String("virtualkeyboard")) + continue; if (disabledQtModules & QtQmlToolingModule && subDirName == QLatin1String("qmltooling")) continue; // Filter for platform or any. @@ -925,6 +940,11 @@ QStringList findQtPlugins(quint64 *usedQtModules, quint64 disabledQtModules, } const QStringList plugins = findSharedLibraries(subDir, platform, debugMatchMode, filter); for (const QString &plugin : plugins) { + // Filter out disabled plugins + if ((disabledPlugins & QtVirtualKeyboardPlugin) + && plugin.startsWith(QLatin1String("qtvirtualkeyboardplugin"))) { + continue; + } const QString pluginPath = subDir.absoluteFilePath(plugin); if (isPlatformPlugin) *platformPlugin = pluginPath; @@ -1355,6 +1375,7 @@ static DeployResult deploy(const Options &options, findQtPlugins(&result.deployedQtLibraries, // For non-QML applications, disable QML to prevent it from being pulled in by the qtaccessiblequick plugin. options.disabledLibraries | (usesQml2 ? 0 : (QtQmlModule | QtQuickModule)), + options.disabledPlugins, qmakeVariables.value(QStringLiteral("QT_INSTALL_PLUGINS")), libraryLocation, infix, debugMatchMode, options.platform, &platformPlugin); |