From 603b031ab26fb741bb3610204e8d03596868b93d Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Wed, 28 Mar 2018 12:11:27 +0200 Subject: [PATCH 1/4] Version bump to 4.6.1 Change-Id: I814d2b864dff341977a41c4d03d96de465a72775 Reviewed-by: Eike Ziller --- qbs/modules/qtc/qtc.qbs | 4 ++-- qtcreator.pri | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/qbs/modules/qtc/qtc.qbs b/qbs/modules/qtc/qtc.qbs index 77b27dc5856..25a1ca3a110 100644 --- a/qbs/modules/qtc/qtc.qbs +++ b/qbs/modules/qtc/qtc.qbs @@ -4,10 +4,10 @@ import qbs.FileInfo import "qtc.js" as HelperFunctions Module { - property string qtcreator_display_version: '4.6.0' + property string qtcreator_display_version: '4.6.1' property string ide_version_major: '4' property string ide_version_minor: '6' - property string ide_version_release: '0' + property string ide_version_release: '1' property string qtcreator_version: ide_version_major + '.' + ide_version_minor + '.' + ide_version_release diff --git a/qtcreator.pri b/qtcreator.pri index c09825f9668..5c3a9666a27 100644 --- a/qtcreator.pri +++ b/qtcreator.pri @@ -1,10 +1,10 @@ !isEmpty(QTCREATOR_PRI_INCLUDED):error("qtcreator.pri already included") QTCREATOR_PRI_INCLUDED = 1 -QTCREATOR_VERSION = 4.6.0 +QTCREATOR_VERSION = 4.6.1 QTCREATOR_COMPAT_VERSION = 4.6.0 VERSION = $$QTCREATOR_VERSION -QTCREATOR_DISPLAY_VERSION = 4.6.0 +QTCREATOR_DISPLAY_VERSION = 4.6.1 QTCREATOR_COPYRIGHT_YEAR = 2018 BINARY_ARTIFACTS_BRANCH = 4.6 From 2e25ce32cb13a9be6319d28cce482251241c03a0 Mon Sep 17 00:00:00 2001 From: Tim Jenssen Date: Fri, 23 Mar 2018 13:35:32 +0100 Subject: [PATCH 2/4] QmlDesigner: fix crash on exit Change-Id: I2e72699dd3f49c917a28d724753e27701a930fac Reviewed-by: Thomas Hartmann --- .../qmldesigner/components/integration/designdocument.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/plugins/qmldesigner/components/integration/designdocument.cpp b/src/plugins/qmldesigner/components/integration/designdocument.cpp index 9a7aa73676c..2004614fdd1 100644 --- a/src/plugins/qmldesigner/components/integration/designdocument.cpp +++ b/src/plugins/qmldesigner/components/integration/designdocument.cpp @@ -214,7 +214,9 @@ void DesignDocument::updateFileName(const Utils::FileName & /*oldFileName*/, con Utils::FileName DesignDocument::fileName() const { - return editor()->document()->filePath(); + if (editor()) + return editor()->document()->filePath(); + return Utils::FileName(); } Kit *DesignDocument::currentKit() const From aa2ea72679fad9fe570f8bcee8ad32273e7489aa Mon Sep 17 00:00:00 2001 From: BogDan Vatra Date: Sat, 17 Mar 2018 09:37:58 +0200 Subject: [PATCH 3/4] Add stdcpp NDK paths to soLibSearchPath It's useful when the application uses std::abort & co to get a useful callstack. Change-Id: I805478333bac3eba21db158df52942599a80c088 Reviewed-by: Vikas Pachdha --- src/plugins/android/androidqtsupport.cpp | 2 +- src/plugins/android/androidqtsupport.h | 6 ++-- .../qmakeandroidsupport.cpp | 31 ++++++++++++++----- .../qmakeandroidsupport/qmakeandroidsupport.h | 4 +-- 4 files changed, 29 insertions(+), 14 deletions(-) diff --git a/src/plugins/android/androidqtsupport.cpp b/src/plugins/android/androidqtsupport.cpp index 1e3aa8ce7d5..012aa696e2d 100644 --- a/src/plugins/android/androidqtsupport.cpp +++ b/src/plugins/android/androidqtsupport.cpp @@ -30,7 +30,7 @@ #include -Utils::FileName Android::AndroidQtSupport::apkPath(ProjectExplorer::Target *target) const +Utils::FileName Android::AndroidQtSupport::apkPath(const ProjectExplorer::Target *target) const { if (!target) return Utils::FileName(); diff --git a/src/plugins/android/androidqtsupport.h b/src/plugins/android/androidqtsupport.h index df2db99551c..83cd3eb0d37 100644 --- a/src/plugins/android/androidqtsupport.h +++ b/src/plugins/android/androidqtsupport.h @@ -60,9 +60,9 @@ public: virtual QStringList soLibSearchPath(const ProjectExplorer::Target *target) const = 0; virtual QStringList androidExtraLibs(const ProjectExplorer::Target *target) const = 0; virtual QStringList projectTargetApplications(const ProjectExplorer::Target *target) const = 0; - virtual Utils::FileName apkPath(ProjectExplorer::Target *target) const; - virtual Utils::FileName androiddeployqtPath(ProjectExplorer::Target *target) const = 0; - virtual Utils::FileName androiddeployJsonPath(ProjectExplorer::Target *target) const = 0; + virtual Utils::FileName apkPath(const ProjectExplorer::Target *target) const; + virtual Utils::FileName androiddeployqtPath(const ProjectExplorer::Target *target) const = 0; + virtual Utils::FileName androiddeployJsonPath(const ProjectExplorer::Target *target) const = 0; virtual void manifestSaved(const ProjectExplorer::Target *target) = 0; virtual Utils::FileName manifestSourcePath(const ProjectExplorer::Target *target) = 0; }; diff --git a/src/plugins/qmakeandroidsupport/qmakeandroidsupport.cpp b/src/plugins/qmakeandroidsupport/qmakeandroidsupport.cpp index 92f1a5d3f6d..61df6401d2e 100644 --- a/src/plugins/qmakeandroidsupport/qmakeandroidsupport.cpp +++ b/src/plugins/qmakeandroidsupport/qmakeandroidsupport.cpp @@ -34,6 +34,10 @@ #include #include +#include +#include +#include + using namespace QmakeProjectManager; namespace QmakeAndroidSupport { @@ -46,25 +50,36 @@ bool QmakeAndroidSupport::canHandle(const ProjectExplorer::Target *target) const QStringList QmakeAndroidSupport::soLibSearchPath(const ProjectExplorer::Target *target) const { - QStringList res; + QSet res; QmakeProject *project = qobject_cast(target->project()); Q_ASSERT(project); if (!project) - return res; + return {}; foreach (QmakeProFile *file, project->allProFiles()) { TargetInformation info = file->targetInformation(); - res << info.buildDir.toString(); + res.insert(info.buildDir.toString()); Utils::FileName destDir = info.destDir; if (!destDir.isEmpty()) { if (destDir.toFileInfo().isRelative()) destDir = Utils::FileName::fromString(QDir::cleanPath(info.buildDir.toString() + '/' + destDir.toString())); - res << destDir.toString(); + res.insert(destDir.toString()); + } + QFile deploymentSettings(androiddeployJsonPath(target).toString()); + if (deploymentSettings.open(QIODevice::ReadOnly)) { + QJsonParseError error; + QJsonDocument doc = QJsonDocument::fromJson(deploymentSettings.readAll(), &error); + if (error.error != QJsonParseError::NoError) + continue; + + auto rootObj = doc.object(); + auto it = rootObj.find("stdcpp-path"); + if (it != rootObj.constEnd()) + res.insert(QFileInfo(it.value().toString()).absolutePath()); } } - - return res; + return res.toList(); } QStringList QmakeAndroidSupport::androidExtraLibs(const ProjectExplorer::Target *target) const @@ -97,7 +112,7 @@ QStringList QmakeAndroidSupport::projectTargetApplications(const ProjectExplorer return apps; } -Utils::FileName QmakeAndroidSupport::androiddeployqtPath(ProjectExplorer::Target *target) const +Utils::FileName QmakeAndroidSupport::androiddeployqtPath(const ProjectExplorer::Target *target) const { QtSupport::BaseQtVersion *version = QtSupport::QtKitInformation::qtVersion(target->kit()); if (!version) @@ -110,7 +125,7 @@ Utils::FileName QmakeAndroidSupport::androiddeployqtPath(ProjectExplorer::Target return Utils::FileName::fromString(command); } -Utils::FileName QmakeAndroidSupport::androiddeployJsonPath(ProjectExplorer::Target *target) const +Utils::FileName QmakeAndroidSupport::androiddeployJsonPath(const ProjectExplorer::Target *target) const { const auto *pro = static_cast(target->project()); QmakeAndroidBuildApkStep *buildApkStep diff --git a/src/plugins/qmakeandroidsupport/qmakeandroidsupport.h b/src/plugins/qmakeandroidsupport/qmakeandroidsupport.h index 52557f1881f..a5a3cef3492 100644 --- a/src/plugins/qmakeandroidsupport/qmakeandroidsupport.h +++ b/src/plugins/qmakeandroidsupport/qmakeandroidsupport.h @@ -39,8 +39,8 @@ public: QStringList soLibSearchPath(const ProjectExplorer::Target *target) const override; QStringList androidExtraLibs(const ProjectExplorer::Target *target) const override; QStringList projectTargetApplications(const ProjectExplorer::Target *target) const override; - Utils::FileName androiddeployqtPath(ProjectExplorer::Target *target) const override; - Utils::FileName androiddeployJsonPath(ProjectExplorer::Target *target) const override; + Utils::FileName androiddeployqtPath(const ProjectExplorer::Target *target) const override; + Utils::FileName androiddeployJsonPath(const ProjectExplorer::Target *target) const override; void manifestSaved(const ProjectExplorer::Target *target) override; Utils::FileName manifestSourcePath(const ProjectExplorer::Target *target) override; From b8eea8f9f8922f883ad9e5a54c6d35183138ccc1 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Wed, 28 Mar 2018 14:13:14 +0200 Subject: [PATCH 4/4] Locator/JavaScript: Fix min/max with more than 2 arguments MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Pass a variable amount of arguments along Task-number: QTCREATORBUG-20167 Change-Id: I3643aca8c18cba14beb8d625b62f45aa4b39d2a4 Reviewed-by: Orgad Shaneh Reviewed-by: André Hartmann --- doc/src/editors/creator-editors.qdoc | 8 ++++---- src/plugins/coreplugin/locator/javascriptfilter.cpp | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/doc/src/editors/creator-editors.qdoc b/doc/src/editors/creator-editors.qdoc index 658a4d686e2..603752dba8f 100644 --- a/doc/src/editors/creator-editors.qdoc +++ b/doc/src/editors/creator-editors.qdoc @@ -3112,11 +3112,11 @@ \li log(x) \li Returns the natural logarithm (base E) of x \row - \li max(x, y) - \li Returns the higher value of x and y + \li max([value1[, value2[, ...]]]) + \li Returns the highest value of the given numbers \row - \li min(x, y) - \li Returns the lower value of x and y + \li min([value1[, value2[, ...]]]) + \li Returns the lowest value of the given numbers \row \li oct(x) \li Returns the octal representation of x diff --git a/src/plugins/coreplugin/locator/javascriptfilter.cpp b/src/plugins/coreplugin/locator/javascriptfilter.cpp index 6f88a9188a2..58a119047bd 100644 --- a/src/plugins/coreplugin/locator/javascriptfilter.cpp +++ b/src/plugins/coreplugin/locator/javascriptfilter.cpp @@ -133,8 +133,8 @@ void JavaScriptFilter::setupEngine() "function floor(x) { return Math.floor(x); }\n" "function hex(x) { return '0x' + x.toString(16); }\n" "function log(x) { return Math.log(x); }\n" - "function max(x, y) { return Math.max(x, y); }\n" - "function min(x, y) { return Math.min(x, y); }\n" + "function max() { return Math.max.apply(null, arguments); }\n" + "function min() { return Math.min.apply(null, arguments); }\n" "function oct(x) { return '0' + x.toString(8); }\n" "function pi() { return Math.PI; }\n" "function pow(x, y) { return Math.pow(x, y); }\n"