summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@qt.io>2019-01-08 09:39:21 +0100
committerLiang Qi <liang.qi@qt.io>2019-01-08 09:58:20 +0100
commit66fb4a7d97b8e3dd90c983a9a94c2e7352f9d5e8 (patch)
treeaf78d7d89a71e6e973b30d450fec1de5b08d8c9c
parente238a37c1888e069ca1a6464f9e4e8f659e53fe7 (diff)
parent7249ba659951a9ca388a7a09cd301a2d9f79eaa4 (diff)
Merge remote-tracking branch 'origin/5.12' into 5.12.1
Conflicts: qttools.pro Change-Id: Ibf247399306794b1d79ebbcd230b853896d0bc87
-rw-r--r--.qmake.conf2
-rw-r--r--dist/changes-5.11.332
-rw-r--r--src/assistant/assistant/main.cpp1
-rw-r--r--src/designer/src/components/formeditor/images/win/filesave.pngbin1205 -> 2699 bytes
-rw-r--r--src/designer/src/components/taskmenu/itemlisteditor.cpp12
-rw-r--r--src/designer/src/components/taskmenu/itemlisteditor.h2
-rw-r--r--src/designer/src/components/taskmenu/tablewidgeteditor.cpp6
-rw-r--r--src/designer/src/components/taskmenu/tablewidgeteditor.h1
-rw-r--r--src/designer/src/components/taskmenu/treewidgeteditor.cpp6
-rw-r--r--src/designer/src/components/taskmenu/treewidgeteditor.h1
-rw-r--r--src/distancefieldgenerator/mainwindow.cpp9
-rw-r--r--src/distancefieldgenerator/mainwindow.ui6
-rw-r--r--src/linguist/linguist/images/mac/filesave.pngbin1206 -> 2699 bytes
-rw-r--r--src/linguist/linguist/images/win/filesave.pngbin1205 -> 2699 bytes
-rw-r--r--src/shared/winutils/qmlutils.cpp4
-rw-r--r--src/shared/winutils/qmlutils.h3
-rw-r--r--src/shared/winutils/utils.cpp6
-rw-r--r--src/shared/winutils/utils.h4
-rw-r--r--src/windeployqt/main.cpp105
-rw-r--r--src/winrtrunner/main.cpp20
20 files changed, 148 insertions, 72 deletions
diff --git a/.qmake.conf b/.qmake.conf
index 097d8b948..1c14aab6d 100644
--- a/.qmake.conf
+++ b/.qmake.conf
@@ -1,3 +1,3 @@
load(qt_build_config)
-MODULE_VERSION = 5.12.0
+MODULE_VERSION = 5.12.1
diff --git a/dist/changes-5.11.3 b/dist/changes-5.11.3
new file mode 100644
index 000000000..4e0a0b187
--- /dev/null
+++ b/dist/changes-5.11.3
@@ -0,0 +1,32 @@
+Qt 5.11.3 is a bug-fix release. It maintains both forward and backward
+compatibility (source and binary) with Qt 5.11.0 through 5.11.2.
+
+For more details, refer to the online documentation included in this
+distribution. The documentation is also available online:
+
+http://doc.qt.io/qt-5/index.html
+
+The Qt version 5.11 series is binary compatible with the 5.10.x series.
+Applications compiled for 5.10 will continue to run with 5.11.
+
+Some of the changes listed in this file include issue tracking numbers
+corresponding to tasks in the Qt Bug Tracker:
+
+https://bugreports.qt.io/
+
+Each of these identifiers can be entered in the bug tracker to obtain more
+information about a particular change.
+
+****************************************************************************
+* macdeployqt *
+****************************************************************************
+
+ - [QTBUG-68823] Now deploys plugins when Qt is configured with
+ -no-framework
+
+****************************************************************************
+* Assistant *
+****************************************************************************
+
+ - [QTBUG-71399] Fix a crash when removing multiple documentation files
+ inside preferences dialog
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
index 8feec99be..e65a29d5f 100644
--- a/src/designer/src/components/formeditor/images/win/filesave.png
+++ b/src/designer/src/components/formeditor/images/win/filesave.png
Binary files differ
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>&amp;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
index b41ecf531..e65a29d5f 100644
--- a/src/linguist/linguist/images/mac/filesave.png
+++ b/src/linguist/linguist/images/mac/filesave.png
Binary files differ
diff --git a/src/linguist/linguist/images/win/filesave.png b/src/linguist/linguist/images/win/filesave.png
index 8feec99be..e65a29d5f 100644
--- a/src/linguist/linguist/images/win/filesave.png
+++ b/src/linguist/linguist/images/win/filesave.png
Binary files differ
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;