diff options
Diffstat (limited to 'src')
18 files changed, 115 insertions, 71 deletions
diff --git a/src/assistant/assistant/main.cpp b/src/assistant/assistant/main.cpp index 04f0fc968..ac20872bd 100644 --- a/src/assistant/assistant/main.cpp +++ b/src/assistant/assistant/main.cpp @@ -268,6 +268,7 @@ void setupTranslations() int main(int argc, char *argv[]) { QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling); + QCoreApplication::setAttribute(Qt::AA_DisableWindowContextHelpButton); TRACE_OBJ QScopedPointer<QCoreApplication> a(createApplication(argc, argv)); #if QT_CONFIG(library) diff --git a/src/designer/src/components/formeditor/images/win/filesave.png b/src/designer/src/components/formeditor/images/win/filesave.png Binary files differindex 8feec99be..e65a29d5f 100644 --- a/src/designer/src/components/formeditor/images/win/filesave.png +++ b/src/designer/src/components/formeditor/images/win/filesave.png diff --git a/src/designer/src/components/taskmenu/itemlisteditor.cpp b/src/designer/src/components/taskmenu/itemlisteditor.cpp index 94ec1e1cc..db31745a3 100644 --- a/src/designer/src/components/taskmenu/itemlisteditor.cpp +++ b/src/designer/src/components/taskmenu/itemlisteditor.cpp @@ -168,7 +168,7 @@ void AbstractItemEditor::propertyChanged(QtProperty *property) // Subproperty return; - if ((role == ItemFlagsShadowRole && prop->value().toInt() == int(QListWidgetItem().flags())) + if ((role == ItemFlagsShadowRole && prop->value().toInt() == defaultItemFlags()) || (role == Qt::DecorationPropertyRole && !qvariant_cast<PropertySheetIconValue>(prop->value()).mask()) || (role == Qt::FontRole && !qvariant_cast<QFont>(prop->value()).resolve())) { prop->setModified(false); @@ -214,7 +214,7 @@ void AbstractItemEditor::resetProperty(QtProperty *property) QtVariantProperty *prop = m_propertyManager->variantProperty(property); int role = m_propertyToRole.value(prop); if (role == ItemFlagsShadowRole) - prop->setValue(QVariant::fromValue(int(QListWidgetItem().flags()))); + prop->setValue(QVariant::fromValue(defaultItemFlags())); else prop->setValue(QVariant(prop->valueType(), nullptr)); prop->setModified(false); @@ -246,7 +246,7 @@ void AbstractItemEditor::updateBrowser() QVariant val = getItemData(role); if (!val.isValid()) { if (role == ItemFlagsShadowRole) - val = QVariant::fromValue(int(QListWidgetItem().flags())); + val = QVariant::fromValue(defaultItemFlags()); else val = QVariant(int(prop->value().userType()), nullptr); prop->setModified(false); @@ -430,6 +430,12 @@ QVariant ItemListEditor::getItemData(int role) const return ui.listWidget->currentItem()->data(role); } +int ItemListEditor::defaultItemFlags() const +{ + static const int flags = QListWidgetItem().flags(); + return flags; +} + void ItemListEditor::cacheReloaded() { reloadIconResources(iconCache(), ui.listWidget); diff --git a/src/designer/src/components/taskmenu/itemlisteditor.h b/src/designer/src/components/taskmenu/itemlisteditor.h index ea0634eed..e9b292446 100644 --- a/src/designer/src/components/taskmenu/itemlisteditor.h +++ b/src/designer/src/components/taskmenu/itemlisteditor.h @@ -85,6 +85,7 @@ private slots: void resetProperty(QtProperty *property); protected: + virtual int defaultItemFlags() const = 0; void setupProperties(PropertyDefinition *propDefs); void setupObject(QWidget *object); void setupEditor(QWidget *object, PropertyDefinition *propDefs); @@ -138,6 +139,7 @@ private slots: protected: void setItemData(int role, const QVariant &v) override; QVariant getItemData(int role) const override; + int defaultItemFlags() const override; private: void setPropertyBrowserVisible(bool v); diff --git a/src/designer/src/components/taskmenu/tablewidgeteditor.cpp b/src/designer/src/components/taskmenu/tablewidgeteditor.cpp index 4a28a2f44..b1a7adf12 100644 --- a/src/designer/src/components/taskmenu/tablewidgeteditor.cpp +++ b/src/designer/src/components/taskmenu/tablewidgeteditor.cpp @@ -184,6 +184,12 @@ QVariant TableWidgetEditor::getItemData(int role) const return item->data(role); } +int TableWidgetEditor::defaultItemFlags() const +{ + static const int flags = QTableWidgetItem().flags(); + return flags; +} + void TableWidgetEditor::on_tableWidget_currentCellChanged(int currentRow, int currentCol, int, int /* XXX remove me */) { m_rowEditor->setCurrentIndex(currentRow); diff --git a/src/designer/src/components/taskmenu/tablewidgeteditor.h b/src/designer/src/components/taskmenu/tablewidgeteditor.h index 26ad05b49..72dbb58da 100644 --- a/src/designer/src/components/taskmenu/tablewidgeteditor.h +++ b/src/designer/src/components/taskmenu/tablewidgeteditor.h @@ -82,6 +82,7 @@ private slots: protected: void setItemData(int role, const QVariant &v) override; QVariant getItemData(int role) const override; + int defaultItemFlags() const override; private: void setPropertyBrowserVisible(bool v); diff --git a/src/designer/src/components/taskmenu/treewidgeteditor.cpp b/src/designer/src/components/taskmenu/treewidgeteditor.cpp index 2ec0109a4..20c7bd0a5 100644 --- a/src/designer/src/components/taskmenu/treewidgeteditor.cpp +++ b/src/designer/src/components/taskmenu/treewidgeteditor.cpp @@ -196,6 +196,12 @@ QVariant TreeWidgetEditor::getItemData(int role) const return ui.treeWidget->currentItem()->data(col, role); } +int TreeWidgetEditor::defaultItemFlags() const +{ + static const int flags = QTreeWidgetItem().flags(); + return flags; +} + void TreeWidgetEditor::on_newItemButton_clicked() { QTreeWidgetItem *curItem = ui.treeWidget->currentItem(); diff --git a/src/designer/src/components/taskmenu/treewidgeteditor.h b/src/designer/src/components/taskmenu/treewidgeteditor.h index a0187678d..9b1a607e4 100644 --- a/src/designer/src/components/taskmenu/treewidgeteditor.h +++ b/src/designer/src/components/taskmenu/treewidgeteditor.h @@ -80,6 +80,7 @@ private slots: protected: void setItemData(int role, const QVariant &v) override; QVariant getItemData(int role) const override; + int defaultItemFlags() const override; private: void setPropertyBrowserVisible(bool v); diff --git a/src/distancefieldgenerator/mainwindow.cpp b/src/distancefieldgenerator/mainwindow.cpp index 09784aca7..763aeaa6b 100644 --- a/src/distancefieldgenerator/mainwindow.cpp +++ b/src/distancefieldgenerator/mainwindow.cpp @@ -35,6 +35,7 @@ #include <QtCore/qmath.h> #include <QtCore/qendian.h> #include <QtCore/qbuffer.h> +#include <QtGui/qdesktopservices.h> #include <QtGui/qrawfont.h> #include <QtWidgets/qmessagebox.h> #include <QtWidgets/qlabel.h> @@ -49,6 +50,11 @@ QT_BEGIN_NAMESPACE +static void openHelp() +{ + QDesktopServices::openUrl(QUrl(QLatin1String("http://doc.qt.io/qt-5/qtdistancefieldgenerator-index.html"))); +} + MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) @@ -60,6 +66,8 @@ MainWindow::MainWindow(QWidget *parent) ui->setupUi(this); ui->lvGlyphs->setModel(m_model); + ui->actionHelp->setShortcut(QKeySequence::HelpContents); + m_statusBarLabel = new QLabel(this); m_statusBarLabel->setText(tr("Ready")); ui->statusbar->addPermanentWidget(m_statusBarLabel); @@ -117,6 +125,7 @@ void MainWindow::setupConnections() connect(ui->tbSelectAll, &QToolButton::clicked, this, &MainWindow::selectAll); connect(ui->actionSelect_all, &QAction::triggered, this, &MainWindow::selectAll); connect(ui->actionSelect_string, &QAction::triggered, this, &MainWindow::selectString); + connect(ui->actionHelp, &QAction::triggered, this, openHelp); connect(ui->actionAbout_App, &QAction::triggered, this, &MainWindow::about); connect(ui->actionAbout_Qt, &QAction::triggered, this, [this]() { QMessageBox::aboutQt(this); diff --git a/src/distancefieldgenerator/mainwindow.ui b/src/distancefieldgenerator/mainwindow.ui index 09a3c4112..e7fe0d788 100644 --- a/src/distancefieldgenerator/mainwindow.ui +++ b/src/distancefieldgenerator/mainwindow.ui @@ -145,6 +145,7 @@ <property name="title"> <string>&Help</string> </property> + <addaction name="actionHelp"/> <addaction name="actionAbout_App"/> <addaction name="actionAbout_Qt"/> </widget> @@ -205,6 +206,11 @@ <string>About Qt</string> </property> </action> + <action name="actionHelp"> + <property name="text"> + <string>Help</string> + </property> + </action> </widget> <resources/> <connections/> diff --git a/src/linguist/linguist/images/mac/filesave.png b/src/linguist/linguist/images/mac/filesave.png Binary files differindex b41ecf531..e65a29d5f 100644 --- a/src/linguist/linguist/images/mac/filesave.png +++ b/src/linguist/linguist/images/mac/filesave.png diff --git a/src/linguist/linguist/images/win/filesave.png b/src/linguist/linguist/images/win/filesave.png Binary files differindex 8feec99be..e65a29d5f 100644 --- a/src/linguist/linguist/images/win/filesave.png +++ b/src/linguist/linguist/images/win/filesave.png diff --git a/src/shared/winutils/qmlutils.cpp b/src/shared/winutils/qmlutils.cpp index 6fe77e64f..e66d30554 100644 --- a/src/shared/winutils/qmlutils.cpp +++ b/src/shared/winutils/qmlutils.cpp @@ -51,7 +51,7 @@ QString QmlImportScanResult::Module::installPath(const QString &root) const const int lastSlashPos = relativePath.lastIndexOf(QLatin1Char('/')); if (lastSlashPos != -1) { result += QLatin1Char('/'); - result += relativePath.left(lastSlashPos); + result += relativePath.leftRef(lastSlashPos); } return result; } @@ -114,7 +114,7 @@ QmlImportScanResult runQmlImportScanner(const QString &directory, const QString + QStringLiteral(": ") + QString::fromLocal8Bit(stdErr); return result; } - QJsonParseError jsonParseError; + QJsonParseError jsonParseError{}; const QJsonDocument data = QJsonDocument::fromJson(stdOut, &jsonParseError); if (data.isNull() ) { *errorMessage = binary + QStringLiteral(" returned invalid JSON output: ") diff --git a/src/shared/winutils/qmlutils.h b/src/shared/winutils/qmlutils.h index 895c7f1de..267f6d92a 100644 --- a/src/shared/winutils/qmlutils.h +++ b/src/shared/winutils/qmlutils.h @@ -47,10 +47,9 @@ struct QmlImportScanResult { QString relativePath; }; - QmlImportScanResult() : ok(false) {} void append(const QmlImportScanResult &other); - bool ok; + bool ok = false; QList<Module> modules; QStringList plugins; }; diff --git a/src/shared/winutils/utils.cpp b/src/shared/winutils/utils.cpp index 195d8efd5..00a205438 100644 --- a/src/shared/winutils/utils.cpp +++ b/src/shared/winutils/utils.cpp @@ -493,8 +493,6 @@ QString findInPath(const QString &file) const char *qmakeInfixKey = "QT_INFIX"; -QMap<QString, QString> queryQMakeAll(QString *errorMessage); - QMap<QString, QString> queryQMakeAll(QString *errorMessage) { QByteArray stdOut; @@ -819,12 +817,12 @@ inline void determineDebugAndDependentLibs(const ImageNtHeader *nth, const void { const bool hasDebugEntry = nth->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_DEBUG].Size; QStringList dependentLibraries; - if (dependentLibrariesIn || (isDebugIn && hasDebugEntry && !isMinGW)) + if (dependentLibrariesIn || (isDebugIn != nullptr && hasDebugEntry && !isMinGW)) dependentLibraries = readImportSections(nth, fileMemory, errorMessage); if (dependentLibrariesIn) *dependentLibrariesIn = dependentLibraries; - if (isDebugIn) { + if (isDebugIn != nullptr) { if (isMinGW) { // Use logic that's used e.g. in objdump / pfd library *isDebugIn = !(nth->FileHeader.Characteristics & IMAGE_FILE_DEBUG_STRIPPED); diff --git a/src/shared/winutils/utils.h b/src/shared/winutils/utils.h index 4cede6b55..5552a3665 100644 --- a/src/shared/winutils/utils.h +++ b/src/shared/winutils/utils.h @@ -82,8 +82,8 @@ inline std::wostream &operator<<(std::wostream &str, const QString &s) // Container class for JSON output class JsonOutput { - typedef QPair<QString, QString> SourceTargetMapping; - typedef QList<SourceTargetMapping> SourceTargetMappings; + using SourceTargetMapping = QPair<QString, QString>; + using SourceTargetMappings = QList<SourceTargetMapping>; public: void addFile(const QString &source, const QString &target) diff --git a/src/windeployqt/main.cpp b/src/windeployqt/main.cpp index e9823bb16..6b6e67d6c 100644 --- a/src/windeployqt/main.cpp +++ b/src/windeployqt/main.cpp @@ -181,12 +181,11 @@ static inline QString webProcessBinary(const char *binaryName, Platform p) static QByteArray formatQtModules(quint64 mask, bool option = false) { QByteArray result; - const size_t qtModulesCount = sizeof(qtModuleEntries)/sizeof(QtModuleEntry); - for (size_t i = 0; i < qtModulesCount; ++i) { - if (mask & qtModuleEntries[i].module) { + for (const auto &qtModule : qtModuleEntries) { + if (mask & qtModule.module) { if (!result.isEmpty()) result.append(' '); - result.append(option ? qtModuleEntries[i].option : qtModuleEntries[i].libraryName); + result.append(option ? qtModule.option : qtModule.libraryName); } } return result; @@ -311,9 +310,8 @@ enum CommandLineParseFlag { static inline int parseArguments(const QStringList &arguments, QCommandLineParser *parser, Options *options, QString *errorMessage) { - typedef QSharedPointer<QCommandLineOption> CommandLineOptionPtr; - typedef QPair<CommandLineOptionPtr, quint64> OptionMaskPair; - typedef QVector<OptionMaskPair> OptionMaskVector; + using CommandLineOptionPtr = QSharedPointer<QCommandLineOption>; + using OptionPtrVector = QVector<CommandLineOptionPtr>; parser->setSingleDashWordOptionMode(QCommandLineParser::ParseAsLongOptions); parser->setApplicationDescription(QStringLiteral("Qt Deploy Tool ") + QLatin1String(QT_VERSION_STR) @@ -445,21 +443,22 @@ static inline int parseArguments(const QStringList &arguments, QCommandLineParse parser->addPositionalArgument(QStringLiteral("[files]"), QStringLiteral("Binaries or directory containing the binary.")); - OptionMaskVector enabledModules; - OptionMaskVector disabledModules; - const size_t qtModulesCount = sizeof(qtModuleEntries)/sizeof(QtModuleEntry); - for (size_t i = 0; i < qtModulesCount; ++i) { + OptionPtrVector enabledModuleOptions; + OptionPtrVector disabledModuleOptions; + const int qtModulesCount = int(sizeof(qtModuleEntries) / sizeof(QtModuleEntry)); + enabledModuleOptions.reserve(qtModulesCount); + disabledModuleOptions.reserve(qtModulesCount); + for (int i = 0; i < qtModulesCount; ++i) { const QString option = QLatin1String(qtModuleEntries[i].option); const QString name = QLatin1String(qtModuleEntries[i].libraryName); const QString enabledDescription = QStringLiteral("Add ") + name + QStringLiteral(" module."); CommandLineOptionPtr enabledOption(new QCommandLineOption(option, enabledDescription)); parser->addOption(*enabledOption.data()); - enabledModules.push_back(OptionMaskPair(enabledOption, qtModuleEntries[i].module)); - + enabledModuleOptions.append(enabledOption); const QString disabledDescription = QStringLiteral("Remove ") + name + QStringLiteral(" module."); CommandLineOptionPtr disabledOption(new QCommandLineOption(QStringLiteral("no-") + option, disabledDescription)); - disabledModules.push_back(OptionMaskPair(disabledOption, qtModuleEntries[i].module)); + disabledModuleOptions.append(disabledOption); parser->addOption(*disabledOption.data()); } @@ -535,11 +534,11 @@ static inline int parseArguments(const QStringList &arguments, QCommandLineParse options->patchQt = !parser->isSet(noPatchQtOption); - for (size_t i = 0; i < qtModulesCount; ++i) { - if (parser->isSet(*enabledModules.at(int(i)).first.data())) - options->additionalLibraries |= enabledModules.at(int(i)).second; - if (parser->isSet(*disabledModules.at(int(i)).first.data())) - options->disabledLibraries |= disabledModules.at(int(i)).second; + for (int i = 0; i < qtModulesCount; ++i) { + if (parser->isSet(*enabledModuleOptions.at(i))) + options->additionalLibraries |= qtModuleEntries[i].module; + if (parser->isSet(*disabledModuleOptions.at(i))) + options->disabledLibraries |= qtModuleEntries[i].module; } // Add some dependencies @@ -830,10 +829,9 @@ static const PluginModuleMapping pluginModuleMappings[] = static inline quint64 qtModuleForPlugin(const QString &subDirName) { - const PluginModuleMapping *end = pluginModuleMappings - + sizeof(pluginModuleMappings) / sizeof(pluginModuleMappings[0]); - const PluginModuleMapping *result = - std::find_if(pluginModuleMappings, end, + const auto end = std::end(pluginModuleMappings); + const auto result = + std::find_if(std::begin(pluginModuleMappings), end, [&subDirName] (const PluginModuleMapping &m) { return subDirName == QLatin1String(m.directoryName); }); return result != end ? result->module : 0; // "designer" } @@ -852,12 +850,11 @@ static quint64 qtModule(QString module, const QString &infix) if (endPos > 0) module.truncate(endPos); // That should leave us with 'Qt5Core<d>'. - const size_t qtModulesCount = sizeof(qtModuleEntries)/sizeof(QtModuleEntry); - for (size_t i = 0; i < qtModulesCount; ++i) { - const QLatin1String libraryName(qtModuleEntries[i].libraryName); + for (const auto &qtModule : qtModuleEntries) { + const QLatin1String libraryName(qtModule.libraryName); if (module == libraryName || (module.size() == libraryName.size() + 1 && module.startsWith(libraryName))) { - return qtModuleEntries[i].module; + return qtModule.module; } } return 0; @@ -946,10 +943,9 @@ QStringList findQtPlugins(quint64 *usedQtModules, quint64 disabledQtModules, static QStringList translationNameFilters(quint64 modules, const QString &prefix) { QStringList result; - const size_t qtModulesCount = sizeof(qtModuleEntries)/sizeof(QtModuleEntry); - for (size_t i = 0; i < qtModulesCount; ++i) { - if ((qtModuleEntries[i].module & modules) && qtModuleEntries[i].translation) { - const QString name = QLatin1String(qtModuleEntries[i].translation) + + for (const auto &qtModule : qtModuleEntries) { + if ((qtModule.module & modules) && qtModule.translation) { + const QString name = QLatin1String(qtModule.translation) + QLatin1Char('_') + prefix + QStringLiteral(".qm"); if (!result.contains(name)) result.push_back(name); @@ -1096,9 +1092,8 @@ static QStringList compilerRunTimeLibs(Platform platform, bool isDebug, unsigned const QString binPath = QFileInfo(gcc).absolutePath(); QStringList filters; const QString suffix = QLatin1Char('*') + sharedLibrarySuffix(platform); - const size_t count = sizeof(minGwRuntimes) / sizeof(minGwRuntimes[0]); - for (size_t i = 0; i < count; ++i) - filters.append(QLatin1String(minGwRuntimes[i]) + suffix); + for (auto minGwRuntime : minGwRuntimes) + filters.append(QLatin1String(minGwRuntime) + suffix); const QFileInfoList &dlls = QDir(binPath).entryInfoList(filters, QDir::Files); for (const QFileInfo &dllFi : dlls) result.append(dllFi.absoluteFilePath()); @@ -1341,12 +1336,11 @@ static DeployResult deploy(const Options &options, // Apply options flags and re-add library names. QString qtGuiLibrary; - const size_t qtModulesCount = sizeof(qtModuleEntries)/sizeof(QtModuleEntry); - for (size_t i = 0; i < qtModulesCount; ++i) { - if (result.deployedQtLibraries & qtModuleEntries[i].module) { - const QString library = libraryPath(libraryLocation, qtModuleEntries[i].libraryName, qtLibInfix, options.platform, isDebug); + for (const auto &qtModule : qtModuleEntries) { + if (result.deployedQtLibraries & qtModule.module) { + const QString library = libraryPath(libraryLocation, qtModule.libraryName, qtLibInfix, options.platform, isDebug); deployedQtLibraries.append(library); - if (qtModuleEntries[i].module == QtGuiModule) + if (qtModule.module == QtGuiModule) qtGuiLibrary = library; } } @@ -1383,7 +1377,7 @@ static DeployResult deploy(const Options &options, if (options.angleDetection != Options::AngleDetectionForceOff && (dependsOnAngle || dependsOnCombinedAngle || !dependsOnOpenGl || options.angleDetection == Options::AngleDetectionForceOn)) { const QString combinedAngleFullPath = qtBinDir + slash + libCombinedQtAngleName; - if (QFileInfo(combinedAngleFullPath).exists()) { + if (QFileInfo::exists(combinedAngleFullPath)) { deployedQtLibraries.append(combinedAngleFullPath); } else { const QString libGlesFullPath = qtBinDir + slash + libGlesName; @@ -1577,8 +1571,8 @@ static bool deployWebEngineCore(const QMap<QString, QString> &qmakeVariables, const QString resourcesTargetDir(options.directory + resourcesSubDir); if (!createDirectory(resourcesTargetDir, errorMessage)) return false; - for (size_t i = 0; i < sizeof(installDataFiles)/sizeof(installDataFiles[0]); ++i) { - if (!updateFile(resourcesSourceDir + QLatin1String(installDataFiles[i]), + for (auto installDataFile : installDataFiles) { + if (!updateFile(resourcesSourceDir + QLatin1String(installDataFile), resourcesTargetDir, options.updateFileFlags, options.json, errorMessage)) { return false; } @@ -1595,21 +1589,20 @@ static bool deployWebEngineCore(const QMap<QString, QString> &qmakeVariables, return createDirectory(options.translationsDirectory, errorMessage) && updateFile(translations.absoluteFilePath(), options.translationsDirectory, options.updateFileFlags, options.json, errorMessage); - } else { - // Translations have been turned off, but QtWebEngine needs at least one. - const QFileInfo enUSpak(translations.filePath() + QStringLiteral("/en-US.pak")); - if (!enUSpak.exists()) { - std::wcerr << "Warning: Cannot find " - << QDir::toNativeSeparators(enUSpak.absoluteFilePath()) << ".\n"; - return true; - } - const QString webEngineTranslationsDir = options.translationsDirectory + QLatin1Char('/') - + translations.fileName(); - if (!createDirectory(webEngineTranslationsDir, errorMessage)) - return false; - return updateFile(enUSpak.absoluteFilePath(), webEngineTranslationsDir, - options.updateFileFlags, options.json, errorMessage); } + // Translations have been turned off, but QtWebEngine needs at least one. + const QFileInfo enUSpak(translations.filePath() + QStringLiteral("/en-US.pak")); + if (!enUSpak.exists()) { + std::wcerr << "Warning: Cannot find " + << QDir::toNativeSeparators(enUSpak.absoluteFilePath()) << ".\n"; + return true; + } + const QString webEngineTranslationsDir = options.translationsDirectory + QLatin1Char('/') + + translations.fileName(); + if (!createDirectory(webEngineTranslationsDir, errorMessage)) + return false; + return updateFile(enUSpak.absoluteFilePath(), webEngineTranslationsDir, + options.updateFileFlags, options.json, errorMessage); } int main(int argc, char **argv) diff --git a/src/winrtrunner/main.cpp b/src/winrtrunner/main.cpp index 72dd763c8..bf4e8fabf 100644 --- a/src/winrtrunner/main.cpp +++ b/src/winrtrunner/main.cpp @@ -40,6 +40,7 @@ #include <QtCore/QCommandLineParser> #include <QtCore/QCoreApplication> #include <QtCore/QDir> +#include <QtCore/QRegExp> #include <QtCore/QStringList> #include <QtCore/QMap> #include <QtCore/QLoggingCategory> @@ -52,6 +53,23 @@ QT_USE_NAMESPACE int main(int argc, char *argv[]) { + // If logging rules are set via env variable, we pass these to the application we are running. + // winrtrunner behaves different from other applications in the regard that its logging rules + // have to be enabled explicitly. Setting "*=true" will not enable extended logging. Reason is + // CI setting "*=true" if an auto test fails and additional winrtrunner output might just + // confuse users. + const QByteArray loggingRules = qgetenv("QT_LOGGING_RULES"); + const QList<QByteArray> rules = loggingRules.split(';'); + QRegExp runnerExp(QLatin1String("^qt\\.winrtrunner.*\\s*=\\s*true\\s*$")); + bool runnerRuleFound = false; + for (const QByteArray &rule : rules) { + if (runnerExp.indexIn(QLatin1String(rule)) != -1) { + runnerRuleFound = true; + break; + } + } + if (!runnerRuleFound) + qunsetenv("QT_LOGGING_RULES"); QCoreApplication a(argc, argv); QCommandLineParser parser; parser.setApplicationDescription(QLatin1String("winrtrunner installs, runs, and collects test " @@ -282,8 +300,6 @@ int main(int argc, char *argv[]) return ignoreErrors ? 0 : 3; } - // If logging rules are set via env variable, we pass these to the application we are running - const QByteArray loggingRules = qgetenv("QT_LOGGING_RULES"); if (!loggingRules.isNull() && !runner.setLoggingRules(loggingRules)) { qCDebug(lcWinRtRunner) << "Could not set logging rules, exiting with code 3."; return ignoreErrors ? 0 : 3; |