From 90de4bae40cb40a9c0ddcceaadf19b6df28be579 Mon Sep 17 00:00:00 2001 From: hjk Date: Fri, 11 Aug 2017 18:02:49 +0200 Subject: Debugger: Hex-encode LLDB disassembler source lines for transport Unescaped quotes break the protocol. Task-number: QTCREATORBUG-18721 Change-Id: I235c4dc33e599769bc854423ef4a7dc6f46bf58e Reviewed-by: Alexandru Croitor --- src/plugins/debugger/lldb/lldbengine.cpp | 1 + 1 file changed, 1 insertion(+) (limited to 'src') diff --git a/src/plugins/debugger/lldb/lldbengine.cpp b/src/plugins/debugger/lldb/lldbengine.cpp index 96f848fb19..a844d98248 100644 --- a/src/plugins/debugger/lldb/lldbengine.cpp +++ b/src/plugins/debugger/lldb/lldbengine.cpp @@ -1019,6 +1019,7 @@ void LldbEngine::fetchDisassembler(DisassemblerAgent *agent) dl.data = line["rawdata"].data(); if (!dl.data.isEmpty()) dl.data += QString(30 - dl.data.size(), QLatin1Char(' ')); + dl.data += fromHex(line["hexdata"].data()); dl.data += line["data"].data(); dl.offset = line["offset"].toInt(); dl.lineNumber = line["line"].toInt(); -- cgit v1.2.1 From ff21d3464d4fc0998723a23a835ce93485b692a0 Mon Sep 17 00:00:00 2001 From: Nikolai Kosjar Date: Tue, 8 Aug 2017 16:02:58 +0200 Subject: Clang: Blacklist override warnings from Q_OBJECT Task-number: QTCREATORBUG-18621 Change-Id: I20d4fd7a93e0557334135bf7bcbd2f6517a6ede6 Reviewed-by: Marco Bubke --- .../clangcodemodel/clangdiagnosticfilter.cpp | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/plugins/clangcodemodel/clangdiagnosticfilter.cpp b/src/plugins/clangcodemodel/clangdiagnosticfilter.cpp index 2a7d92b987..78126eea69 100644 --- a/src/plugins/clangcodemodel/clangdiagnosticfilter.cpp +++ b/src/plugins/clangcodemodel/clangdiagnosticfilter.cpp @@ -45,8 +45,8 @@ bool isWarningOrNote(ClangBackEnd::DiagnosticSeverity severity) Q_UNREACHABLE(); } -bool isBlackListedDiagnostic(const ClangBackEnd::DiagnosticContainer &diagnostic, - bool isHeaderFile) +bool isBlackListedHeaderDiagnostic(const ClangBackEnd::DiagnosticContainer &diagnostic, + bool isHeaderFile) { static const Utf8StringVector blackList{ Utf8StringLiteral("warning: #pragma once in main file"), @@ -56,6 +56,21 @@ bool isBlackListedDiagnostic(const ClangBackEnd::DiagnosticContainer &diagnostic return isHeaderFile && blackList.contains(diagnostic.text()); } +bool isBlackListedQtDiagnostic(const ClangBackEnd::DiagnosticContainer &diagnostic) +{ + static const Utf8StringVector blackList{ + // From Q_OBJECT: + Utf8StringLiteral("warning: " + "'metaObject' overrides a member function but is not marked 'override'"), + Utf8StringLiteral("warning: " + "'qt_metacast' overrides a member function but is not marked 'override'"), + Utf8StringLiteral("warning: " + "'qt_metacall' overrides a member function but is not marked 'override'"), + }; + + return blackList.contains(diagnostic.text()); +} + template QVector filterDiagnostics(const QVector &diagnostics, @@ -97,7 +112,8 @@ void ClangDiagnosticFilter::filterDocumentRelatedWarnings( const auto isLocalWarning = [this, isHeaderFile] (const ClangBackEnd::DiagnosticContainer &diagnostic) { return isWarningOrNote(diagnostic.severity()) - && !isBlackListedDiagnostic(diagnostic, isHeaderFile) + && !isBlackListedHeaderDiagnostic(diagnostic, isHeaderFile) + && !isBlackListedQtDiagnostic(diagnostic) && diagnostic.location().filePath() == m_filePath; }; -- cgit v1.2.1 From cdffb378fd41438e3c43b17f82bb090c7d58f54e Mon Sep 17 00:00:00 2001 From: Vikas Pachdha Date: Tue, 15 Aug 2017 13:38:09 +0200 Subject: Android: Fix QML debugging Specify the qml server address and use correct default loop back address in qmlengine Change-Id: I9b77cb3385041bbe79900e7f7a188ca26124bacc Reviewed-by: Ulf Hermann --- src/plugins/android/androiddebugsupport.cpp | 1 + src/plugins/android/androidrunner.cpp | 11 ++++++++--- src/plugins/android/androidrunner.h | 5 ++++- src/plugins/debugger/qml/qmlengine.cpp | 2 +- 4 files changed, 14 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/plugins/android/androiddebugsupport.cpp b/src/plugins/android/androiddebugsupport.cpp index 92b80cf2cf..5bc850fe64 100644 --- a/src/plugins/android/androiddebugsupport.cpp +++ b/src/plugins/android/androiddebugsupport.cpp @@ -133,6 +133,7 @@ void AndroidDebugSupport::start() .appendPath(toNdkArch(AndroidManager::targetArch(target))).toString(); } if (isQmlDebugging()) { + params.qmlServer.host = m_runner->qmlServerHost(); params.qmlServer.port = m_runner->qmlServerPort(); //TODO: Not sure if these are the right paths. QtSupport::BaseQtVersion *version = QtSupport::QtKitInformation::qtVersion(kit); diff --git a/src/plugins/android/androidrunner.cpp b/src/plugins/android/androidrunner.cpp index 8dcd133369..04d87284af 100644 --- a/src/plugins/android/androidrunner.cpp +++ b/src/plugins/android/androidrunner.cpp @@ -226,7 +226,8 @@ public: Utils::Port localGdbServerPort() const { return m_localGdbServerPort; } signals: - void remoteProcessStarted(Utils::Port gdbServerPort, Utils::Port qmlServerPort, int pid); + void remoteProcessStarted(Utils::Port gdbServerPort, Utils::Port qmlServerPort, + QString qmlServerHost, int pid); void remoteProcessFinished(const QString &errString = QString()); void remoteOutput(const QString &output); @@ -257,6 +258,7 @@ private: bool m_useCppDebugger = false; QmlDebug::QmlDebugServicesPreset m_qmlDebugServices; Utils::Port m_localGdbServerPort; // Local end of forwarded debug socket. + QString m_qmlServerHost; Utils::Port m_qmlPort; QString m_pingFile; QString m_pongFile; @@ -295,6 +297,7 @@ AndroidRunnerWorker::AndroidRunnerWorker(RunControl *runControl, const AndroidRu QTC_ASSERT(server.listen(QHostAddress::LocalHost) || server.listen(QHostAddress::LocalHostIPv6), qDebug() << tr("No free ports available on host for QML debugging.")); + m_qmlServerHost = server.serverAddress().toString(); m_qmlPort = Utils::Port(server.serverPort()); } else { m_qmlPort = Utils::Port(); @@ -638,7 +641,7 @@ void AndroidRunnerWorker::onProcessIdChanged(qint64 pid) } else { // In debugging cases this will be funneled to the engine to actually start // and attach gdb. Afterwards this ends up in handleRemoteDebuggerRunning() below. - emit remoteProcessStarted(m_localGdbServerPort, m_qmlPort, m_processPID); + emit remoteProcessStarted(m_localGdbServerPort, m_qmlPort, m_qmlServerHost, m_processPID); logcatReadStandardOutput(); QTC_ASSERT(!m_psIsAlive, /**/); m_psIsAlive.reset(new QProcess); @@ -782,10 +785,12 @@ void AndroidRunner::remoteErrorOutput(const QString &output) m_outputParser.processOutput(output); } -void AndroidRunner::handleRemoteProcessStarted(Utils::Port gdbServerPort, Utils::Port qmlServerPort, int pid) +void AndroidRunner::handleRemoteProcessStarted(Utils::Port gdbServerPort, Utils::Port qmlServerPort, + QString qmlServerHost, int pid) { m_pid = ProcessHandle(pid); m_gdbServerPort = gdbServerPort; + m_qmlServerHost = qmlServerHost; m_qmlServerPort = qmlServerPort; reportStarted(); } diff --git a/src/plugins/android/androidrunner.h b/src/plugins/android/androidrunner.h index 2efd52299c..6215cc49a5 100644 --- a/src/plugins/android/androidrunner.h +++ b/src/plugins/android/androidrunner.h @@ -57,6 +57,7 @@ public: const AndroidRunnable &runnable() const { return m_androidRunnable; } Utils::Port gdbServerPort() const { return m_gdbServerPort; } + QString qmlServerHost() const { return m_qmlServerHost; } Utils::Port qmlServerPort() const { return m_qmlServerPort; } Utils::ProcessHandle pid() const { return m_pid; } @@ -76,7 +77,8 @@ private: void remoteOutput(const QString &output); void remoteErrorOutput(const QString &output); void gotRemoteOutput(const QString &output); - void handleRemoteProcessStarted(Utils::Port gdbServerPort, Utils::Port qmlServerPort, int pid); + void handleRemoteProcessStarted(Utils::Port gdbServerPort, Utils::Port qmlServerPort, + QString qmlServerHost, int pid); void handleRemoteProcessFinished(const QString &errString = QString()); void checkAVD(); void launchAVD(); @@ -88,6 +90,7 @@ private: QScopedPointer m_worker; QPointer m_target; Utils::Port m_gdbServerPort; + QString m_qmlServerHost; Utils::Port m_qmlServerPort; Utils::ProcessHandle m_pid; QmlDebug::QmlOutputParser m_outputParser; diff --git a/src/plugins/debugger/qml/qmlengine.cpp b/src/plugins/debugger/qml/qmlengine.cpp index 10e6d4f3b2..4dc8280851 100644 --- a/src/plugins/debugger/qml/qmlengine.cpp +++ b/src/plugins/debugger/qml/qmlengine.cpp @@ -427,7 +427,7 @@ void QmlEngine::beginConnection(Utils::Port port) QString host = runParameters().qmlServer.host; // Use localhost as default if (host.isEmpty()) - host = "localhost"; + host = QHostAddress(QHostAddress::LocalHost).toString(); /* * Let plugin-specific code override the port printed by the application. This is necessary -- cgit v1.2.1 From 49ffe0fb406421e9d2b110cae59fba1542fdf958 Mon Sep 17 00:00:00 2001 From: hjk Date: Tue, 15 Aug 2017 16:41:32 +0200 Subject: QmlProfiler: Disconnect some signals on shutdown It's a workaround, not a proper solution (as indicated by the SOFT ASSERT: "d->m_profilerState" in file qmlprofilerruncontrol.cpp, line 144 triggering) The state manager (and possibly more) is referenced from potentially running run controls, that are ramped down after the plugin. Task-number: QTCREATORBUG-18736 Change-Id: Ia20b168fe640c818276a777e1d23feab0cacd565 Reviewed-by: Ulf Hermann --- src/plugins/qmlprofiler/qmlprofilerplugin.cpp | 4 +++- src/plugins/qmlprofiler/qmlprofilerplugin.h | 5 +++++ src/plugins/qmlprofiler/qmlprofilerruncontrol.cpp | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/plugins/qmlprofiler/qmlprofilerplugin.cpp b/src/plugins/qmlprofiler/qmlprofilerplugin.cpp index 23dcfaf3f4..d8781df9ba 100644 --- a/src/plugins/qmlprofiler/qmlprofilerplugin.cpp +++ b/src/plugins/qmlprofiler/qmlprofilerplugin.cpp @@ -89,7 +89,7 @@ bool QmlProfilerPlugin::initialize(const QStringList &arguments, QString *errorS void QmlProfilerPlugin::extensionsInitialized() { - (void) new QmlProfilerTool(this); + m_profilerTool = new QmlProfilerTool(this); addAutoReleasedObject(new QmlProfilerOptionsPage); @@ -111,6 +111,8 @@ void QmlProfilerPlugin::extensionsInitialized() ExtensionSystem::IPlugin::ShutdownFlag QmlProfilerPlugin::aboutToShutdown() { + delete m_profilerTool; + // Save settings. // Disconnect from signals that are not needed during shutdown // Hide UI (if you add UI that is not in the main window directly) diff --git a/src/plugins/qmlprofiler/qmlprofilerplugin.h b/src/plugins/qmlprofiler/qmlprofilerplugin.h index 3175fa917a..bd38d6964f 100644 --- a/src/plugins/qmlprofiler/qmlprofilerplugin.h +++ b/src/plugins/qmlprofiler/qmlprofilerplugin.h @@ -34,6 +34,8 @@ namespace QmlProfiler { namespace Internal { +class QmlProfilerTool; + class QmlProfilerPlugin : public ExtensionSystem::IPlugin { Q_OBJECT @@ -47,6 +49,9 @@ public: static QmlProfilerSettings *globalSettings(); QList createTestObjects() const override; + +private: + QmlProfilerTool *m_profilerTool; }; } // namespace Internal diff --git a/src/plugins/qmlprofiler/qmlprofilerruncontrol.cpp b/src/plugins/qmlprofiler/qmlprofilerruncontrol.cpp index 90608cbb1f..949eab3176 100644 --- a/src/plugins/qmlprofiler/qmlprofilerruncontrol.cpp +++ b/src/plugins/qmlprofiler/qmlprofilerruncontrol.cpp @@ -64,7 +64,7 @@ static QString QmlServerUrl = "QmlServerUrl"; class QmlProfilerRunner::QmlProfilerRunnerPrivate { public: - QmlProfilerStateManager *m_profilerState = 0; + QPointer m_profilerState; }; // -- cgit v1.2.1 From a4d8105497785634c2d5f37ec89c5f3b4829d2d6 Mon Sep 17 00:00:00 2001 From: Vikas Pachdha Date: Wed, 16 Aug 2017 12:47:00 +0200 Subject: Android: Support API level 25 and 26 Task-number: QTCREATORBUG-18690 Change-Id: Ifa25d95c75e854be1b88065925dd77296720f183 Reviewed-by: Eike Ziller Reviewed-by: BogDan Vatra --- src/plugins/android/androidmanager.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/plugins/android/androidmanager.cpp b/src/plugins/android/androidmanager.cpp index ee57399060..54f2bdd482 100644 --- a/src/plugins/android/androidmanager.cpp +++ b/src/plugins/android/androidmanager.cpp @@ -241,7 +241,7 @@ void AndroidManager::setDeviceSerialNumber(ProjectExplorer::Target *target, cons QPair AndroidManager::apiLevelRange() { - return qMakePair(9, 23); + return qMakePair(9, 26); } QString AndroidManager::androidNameForApiLevel(int x) @@ -291,6 +291,8 @@ QString AndroidManager::androidNameForApiLevel(int x) return QLatin1String("Android 7.0"); case 25: return QLatin1String("Android 7.1"); + case 26: + return QLatin1String("Android 8.0"); default: return tr("Unknown Android version. API Level: %1").arg(QString::number(x)); } -- cgit v1.2.1 From 1acc4821307cce5f0a6428757d78d0bded284ae4 Mon Sep 17 00:00:00 2001 From: Robert Loehning Date: Wed, 16 Aug 2017 12:10:28 +0200 Subject: QmlProfiler: Initialize and reset QmlProfilerPlugin::m_profilerTool Change-Id: I6efa81c1c89610f50f0057fccce438176bff3120 Reviewed-by: Ulf Hermann --- src/plugins/qmlprofiler/qmlprofilerplugin.cpp | 1 + src/plugins/qmlprofiler/qmlprofilerplugin.h | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/plugins/qmlprofiler/qmlprofilerplugin.cpp b/src/plugins/qmlprofiler/qmlprofilerplugin.cpp index d8781df9ba..273666e35b 100644 --- a/src/plugins/qmlprofiler/qmlprofilerplugin.cpp +++ b/src/plugins/qmlprofiler/qmlprofilerplugin.cpp @@ -112,6 +112,7 @@ void QmlProfilerPlugin::extensionsInitialized() ExtensionSystem::IPlugin::ShutdownFlag QmlProfilerPlugin::aboutToShutdown() { delete m_profilerTool; + m_profilerTool = nullptr; // Save settings. // Disconnect from signals that are not needed during shutdown diff --git a/src/plugins/qmlprofiler/qmlprofilerplugin.h b/src/plugins/qmlprofiler/qmlprofilerplugin.h index bd38d6964f..88b764e95a 100644 --- a/src/plugins/qmlprofiler/qmlprofilerplugin.h +++ b/src/plugins/qmlprofiler/qmlprofilerplugin.h @@ -51,7 +51,7 @@ public: QList createTestObjects() const override; private: - QmlProfilerTool *m_profilerTool; + QmlProfilerTool *m_profilerTool = nullptr; }; } // namespace Internal -- cgit v1.2.1 From 06569e5f3a3376f5e4e1456ae4cf0dc9290799cc Mon Sep 17 00:00:00 2001 From: hjk Date: Wed, 16 Aug 2017 16:44:22 +0200 Subject: ProjectExplorer: Order projects in session alphabetically again Task-number: QTCREATORBUG-18337 Change-Id: I716369a1012f93c6c676e89c3b32cd1a406996a5 Reviewed-by: Eike Ziller --- src/libs/utils/treemodel.cpp | 7 +++++++ src/libs/utils/treemodel.h | 11 +++++++++++ src/plugins/projectexplorer/projectmodels.cpp | 23 ++++++++++++----------- 3 files changed, 30 insertions(+), 11 deletions(-) (limited to 'src') diff --git a/src/libs/utils/treemodel.cpp b/src/libs/utils/treemodel.cpp index b4684eedfe..2b94d56311 100644 --- a/src/libs/utils/treemodel.cpp +++ b/src/libs/utils/treemodel.cpp @@ -689,6 +689,13 @@ void TreeItem::insertChild(int pos, TreeItem *item) } } +void TreeItem::insertOrderedChild(TreeItem *item, + const std::function &cmp) +{ + auto where = std::lower_bound(begin(), end(), item, cmp); + insertChild(int(where - begin()), item); +} + void TreeItem::removeChildAt(int pos) { QTC_ASSERT(0 <= pos && pos < m_children.count(), return); diff --git a/src/libs/utils/treemodel.h b/src/libs/utils/treemodel.h index 8e0c4407d2..63818b27c2 100644 --- a/src/libs/utils/treemodel.h +++ b/src/libs/utils/treemodel.h @@ -54,6 +54,9 @@ public: void prependChild(TreeItem *item); void appendChild(TreeItem *item); void insertChild(int pos, TreeItem *item); + void insertOrderedChild(TreeItem *item, + const std::function &cmp); + void removeChildAt(int pos); void removeChildren(); void sortChildren(const std::function &cmp); @@ -135,6 +138,14 @@ public: ParentType *parent() const { return static_cast(TreeItem::parent()); } + + void insertOrderedChild(ChildType *item, const std::function &cmp) + { + const auto cmp0 = [cmp](const TreeItem *lhs, const TreeItem *rhs) { + return cmp(static_cast(lhs), static_cast(rhs)); + }; + TreeItem::insertOrderedChild(item, cmp0); + } }; class QTCREATOR_UTILS_EXPORT StaticTreeItem : public TreeItem diff --git a/src/plugins/projectexplorer/projectmodels.cpp b/src/plugins/projectexplorer/projectmodels.cpp index f6aad7fa53..b71f171705 100644 --- a/src/plugins/projectexplorer/projectmodels.cpp +++ b/src/plugins/projectexplorer/projectmodels.cpp @@ -175,6 +175,16 @@ bool FlatModel::setData(const QModelIndex &index, const QVariant &value, int rol return true; } +static bool compareProjectNames(const WrapperNode *lhs, const WrapperNode *rhs) +{ + Node *p1 = lhs->m_node; + Node *p2 = rhs->m_node; + const int displayNameResult = caseFriendlyCompare(p1->displayName(), p2->displayName()); + if (displayNameResult != 0) + return displayNameResult < 0; + return p1 < p2; // sort by pointer value +} + void FlatModel::addOrRebuildProjectModel(Project *project) { WrapperNode *container = nodeForProject(project); @@ -182,7 +192,7 @@ void FlatModel::addOrRebuildProjectModel(Project *project) container->removeChildren(); } else { container = new WrapperNode(project->containerNode()); - rootItem()->appendChild(container); + rootItem()->insertOrderedChild(container, &compareProjectNames); } QSet seen; @@ -230,16 +240,7 @@ void FlatModel::updateSubtree(FolderNode *node) void FlatModel::rebuildModel() { - QList projects = SessionManager::projects(); - QTC_CHECK(projects.size() == rootItem()->childCount()); - - Utils::sort(projects, [](Project *p1, Project *p2) { - const int displayNameResult = caseFriendlyCompare(p1->displayName(), p2->displayName()); - if (displayNameResult != 0) - return displayNameResult < 0; - return p1 < p2; // sort by pointer value - }); - + const QList projects = SessionManager::projects(); for (Project *project : projects) addOrRebuildProjectModel(project); } -- cgit v1.2.1 From 10d505b4e4fd49fa972ed216c017657b05510f1d Mon Sep 17 00:00:00 2001 From: hjk Date: Wed, 16 Aug 2017 11:48:20 +0200 Subject: Welcome: Scroll view on filter update Task-number: QTCREATORBUG-18261 Change-Id: Ib7060af4cc787e4da55a860d0ae528e535fdcda7 Reviewed-by: Eike Ziller --- src/plugins/qtsupport/exampleslistmodel.cpp | 1 + 1 file changed, 1 insertion(+) (limited to 'src') diff --git a/src/plugins/qtsupport/exampleslistmodel.cpp b/src/plugins/qtsupport/exampleslistmodel.cpp index 01a8b1e0a2..a9e4c208ac 100644 --- a/src/plugins/qtsupport/exampleslistmodel.cpp +++ b/src/plugins/qtsupport/exampleslistmodel.cpp @@ -709,6 +709,7 @@ void ExamplesListModelFilter::timerEvent(QTimerEvent *timerEvent) { if (m_timerId == timerEvent->timerId()) { invalidateFilter(); + emit layoutChanged(); killTimer(m_timerId); m_timerId = 0; } -- cgit v1.2.1 From 3a16aaa63941e693e110415fc33f42603a298b76 Mon Sep 17 00:00:00 2001 From: BogDan Vatra Date: Wed, 16 Aug 2017 16:40:55 +0300 Subject: Android: Add android-clang to suggestedMkspecList It is needed for android-clang qt builds Task-number: QTBUG-60455 Change-Id: Ice1c552754214fe4ec47b970da86087d03e30530 Reviewed-by: Eike Ziller Reviewed-by: Vikas Pachdha --- src/plugins/android/androidtoolchain.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/plugins/android/androidtoolchain.cpp b/src/plugins/android/androidtoolchain.cpp index c8223dd81a..bb3b10ee92 100644 --- a/src/plugins/android/androidtoolchain.cpp +++ b/src/plugins/android/androidtoolchain.cpp @@ -203,7 +203,8 @@ bool AndroidToolChain::fromMap(const QVariantMap &data) FileNameList AndroidToolChain::suggestedMkspecList() const { - return FileNameList()<< FileName::fromLatin1("android-g++"); + return FileNameList() << FileName::fromLatin1("android-g++") + << FileName::fromLatin1("android-clang"); } QString AndroidToolChain::makeCommand(const Environment &env) const -- cgit v1.2.1 From 0db3e0fb0b4dc43c34eea33d4ddd6cfc9c523a23 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Wed, 16 Aug 2017 18:10:02 +0200 Subject: qbs build: Fix display of copyright year in "About" dialog The template was not properly replaced. Change-Id: I1aa0f01fcd13475293b88ddacb357f3783642e6b Reviewed-by: Eike Ziller --- src/app/app_version_header.qbs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/app/app_version_header.qbs b/src/app/app_version_header.qbs index e6903d6cc5..69ddc9d6e2 100644 --- a/src/app/app_version_header.qbs +++ b/src/app/app_version_header.qbs @@ -42,8 +42,8 @@ Product { + product.moduleProperty("qtc", "ide_version_minor") + "\n"); content = content.replace(/(\n#define IDE_VERSION_RELEASE) .+\n/, "$1 " + product.moduleProperty("qtc", "ide_version_release") + "\n"); - content = content.replace(/(\n#define IDE_COPYRIGHT_YEAR) .+\n/, "$1 " - + product.moduleProperty("qtc", "qtcreator_copyright_year") + "\n"); + content = content.replace('\"$${QTCREATOR_COPYRIGHT_YEAR}\"', + '"' + product.moduleProperty("qtc", "qtcreator_copyright_year") + '"'); file = new TextFile(output.filePath, TextFile.WriteOnly); file.truncate(); file.write(content); -- cgit v1.2.1 From 2f762508b03d6729c7741d637ea77eb8f851b5ff Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Thu, 17 Aug 2017 10:40:08 +0200 Subject: qbs build: Clean up template replacement code for app version header This amends 0db3e0fb0b. The code accidentally worked correctly, but was based on a wrong assumption and was confusing and misleading. Change-Id: I0617708a758e8d6082ed46635311bb156b22692d Reviewed-by: Eike Ziller --- src/app/app_version_header.qbs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/app/app_version_header.qbs b/src/app/app_version_header.qbs index 69ddc9d6e2..fd55ba00c5 100644 --- a/src/app/app_version_header.qbs +++ b/src/app/app_version_header.qbs @@ -42,8 +42,8 @@ Product { + product.moduleProperty("qtc", "ide_version_minor") + "\n"); content = content.replace(/(\n#define IDE_VERSION_RELEASE) .+\n/, "$1 " + product.moduleProperty("qtc", "ide_version_release") + "\n"); - content = content.replace('\"$${QTCREATOR_COPYRIGHT_YEAR}\"', - '"' + product.moduleProperty("qtc", "qtcreator_copyright_year") + '"'); + content = content.replace("$${QTCREATOR_COPYRIGHT_YEAR}", + product.moduleProperty("qtc", "qtcreator_copyright_year")); file = new TextFile(output.filePath, TextFile.WriteOnly); file.truncate(); file.write(content); -- cgit v1.2.1 From ef1b0f999df0c7e817f30f1d80406b1d4471c6a6 Mon Sep 17 00:00:00 2001 From: hjk Date: Thu, 17 Aug 2017 10:15:46 +0200 Subject: Debugger: Fix assert handling for devices without signalOperation() That's not a full solution, but fixes the reported crash. The core of the problem is that BareMetal devices do not provide signalOperation() (which is ok) and this code path should not have been taken to start with. Change-Id: Ib903b8d7f0728c5b3cb217b567247e66b751c5c3 Task-number: QTCREATORBUG-18694 Reviewed-by: Christian Kandeler --- src/plugins/debugger/gdb/gdbengine.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp index fd3f8892f3..a49f469b87 100644 --- a/src/plugins/debugger/gdb/gdbengine.cpp +++ b/src/plugins/debugger/gdb/gdbengine.cpp @@ -800,7 +800,7 @@ void GdbEngine::interruptInferior() QTC_ASSERT(state() == InferiorStopRequested, qDebug() << state(); notifyInferiorStopFailed()); QTC_ASSERT(!m_signalOperation, notifyInferiorStopFailed()); m_signalOperation = runTool()->device()->signalOperation(); - QTC_ASSERT(m_signalOperation, notifyInferiorStopFailed()); + QTC_ASSERT(m_signalOperation, notifyInferiorStopFailed(); return); connect(m_signalOperation.data(), &DeviceProcessSignalOperation::finished, this, &GdbEngine::handleInterruptDeviceInferior); -- cgit v1.2.1 From a4aa79a4f8da10256e923bca8fa4403436ea64dc Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Thu, 17 Aug 2017 11:31:31 +0200 Subject: QmlJS: Rename variable called "interface" Easily conflicts with a macro of the same name in windows.h. Change-Id: Ia6dfb294092497c48816e71ff901e9c3b2c8359f Reviewed-by: Ulf Hermann --- src/libs/qmljs/qmljsmodelmanagerinterface.cpp | 10 +++++----- src/libs/qmljs/qmljsmodelmanagerinterface.h | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/libs/qmljs/qmljsmodelmanagerinterface.cpp b/src/libs/qmljs/qmljsmodelmanagerinterface.cpp index e5506224bf..fbd2339105 100644 --- a/src/libs/qmljs/qmljsmodelmanagerinterface.cpp +++ b/src/libs/qmljs/qmljsmodelmanagerinterface.cpp @@ -1295,13 +1295,13 @@ bool rescanExports(const QString &fileName, FindExportedCppTypes &finder, return hasNewInfo; } -void ModelManagerInterface::updateCppQmlTypes(QFutureInterface &interface, +void ModelManagerInterface::updateCppQmlTypes(QFutureInterface &futureInterface, ModelManagerInterface *qmlModelManager, CPlusPlus::Snapshot snapshot, QHash > documents) { - interface.setProgressRange(0, documents.size()); - interface.setProgressValue(0); + futureInterface.setProgressRange(0, documents.size()); + futureInterface.setProgressValue(0); CppDataHash newData; QHash > newDeclarations; @@ -1316,9 +1316,9 @@ void ModelManagerInterface::updateCppQmlTypes(QFutureInterface &interface, bool hasNewInfo = false; typedef QPair DocScanPair; foreach (const DocScanPair &pair, documents) { - if (interface.isCanceled()) + if (futureInterface.isCanceled()) return; - interface.setProgressValue(interface.progressValue() + 1); + futureInterface.setProgressValue(futureInterface.progressValue() + 1); CPlusPlus::Document::Ptr doc = pair.first; const bool scan = pair.second; diff --git a/src/libs/qmljs/qmljsmodelmanagerinterface.h b/src/libs/qmljs/qmljsmodelmanagerinterface.h index 98174de4f9..c86177d487 100644 --- a/src/libs/qmljs/qmljsmodelmanagerinterface.h +++ b/src/libs/qmljs/qmljsmodelmanagerinterface.h @@ -242,7 +242,7 @@ protected: ModelManagerInterface *modelManager, QmlJS::Dialect mainLanguage, bool emitDocChangedOnDisk); - static void updateCppQmlTypes(QFutureInterface &interface, + static void updateCppQmlTypes(QFutureInterface &futureInterface, ModelManagerInterface *qmlModelManager, CPlusPlus::Snapshot snapshot, QHash > documents); -- cgit v1.2.1