From ba947fbb9e7da6c6e9f7b32421c9cf5113c7e2ee Mon Sep 17 00:00:00 2001 From: hjk Date: Thu, 16 Apr 2015 09:23:39 +0200 Subject: [PATCH 01/27] Debugger: Fix handling of ? in dumper test Normally, we use '?' as an optional Qt namespace qualification. This clashes with the use of ? in a regexp type expression. Re-order checks to avoid the clash. Change-Id: I4a8aee0174f4f3d21bec624919856623808becb1 Reviewed-by: Christian Stenger --- tests/auto/debugger/tst_dumpers.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/tests/auto/debugger/tst_dumpers.cpp b/tests/auto/debugger/tst_dumpers.cpp index b365da3e095..deab2783e16 100644 --- a/tests/auto/debugger/tst_dumpers.cpp +++ b/tests/auto/debugger/tst_dumpers.cpp @@ -414,10 +414,6 @@ struct Type expectedType.replace(' ', ""); expectedType.replace("const", ""); expectedType.replace('@', context.nameSpace); - if (fullNamespaceMatch) - expectedType.replace('?', context.nameSpace); - else - expectedType.replace('?', ""); if (isPattern) { QString actual = QString::fromLatin1(actualType); @@ -425,6 +421,11 @@ struct Type return QRegExp(expected).exactMatch(actual); } + if (fullNamespaceMatch) + expectedType.replace('?', context.nameSpace); + else + expectedType.replace('?', ""); + if (actualType == expectedType) return true; From 87c8772d7f7926e6d6611c5d7358509a5cf2fbaa Mon Sep 17 00:00:00 2001 From: hjk Date: Wed, 15 Apr 2015 18:46:10 +0200 Subject: [PATCH 02/27] Debugger: Fix red display of changed variables with LLDB That was a recent regression: All values were red ("changed"). Change-Id: Ib77c1aefa978832aad58b06eb73778a5654998bb Reviewed-by: Christian Stenger --- src/plugins/debugger/lldb/lldbengine.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/plugins/debugger/lldb/lldbengine.cpp b/src/plugins/debugger/lldb/lldbengine.cpp index 7362a242117..97ff3bbca59 100644 --- a/src/plugins/debugger/lldb/lldbengine.cpp +++ b/src/plugins/debugger/lldb/lldbengine.cpp @@ -868,13 +868,14 @@ void LldbEngine::assignValueInDebugger(WatchItem *, void LldbEngine::updateWatchItem(WatchItem *) { - updateLocals(); + doUpdateLocals(UpdateParameters()); } void LldbEngine::updateLocals() { - UpdateParameters params; - doUpdateLocals(params); + watchHandler()->resetValueCache(); + watchHandler()->notifyUpdateStarted(); + doUpdateLocals(UpdateParameters()); } void LldbEngine::doUpdateLocals(UpdateParameters params) @@ -923,7 +924,6 @@ void LldbEngine::doUpdateLocals(UpdateParameters params) m_lastDebuggableCommand = cmd; m_lastDebuggableCommand.args.replace("\"passexceptions\":0", "\"passexceptions\":1"); - watchHandler()->notifyUpdateStarted(); runCommand(cmd); reloadRegisters(); From 6936d46bb990e5dc5be8b1fcc81e89454db8879a Mon Sep 17 00:00:00 2001 From: Sergey Belyashov Date: Wed, 15 Apr 2015 22:50:32 +0300 Subject: [PATCH 03/27] Fixed national symbols in QBS shadow build directory Change-Id: Ia76dce957465df49a00a831651e096e24107e864 Reviewed-by: Jake Petroules Reviewed-by: Oswald Buddenhagen --- src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp b/src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp index 28e8d1184ea..d7fdac80f75 100644 --- a/src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp +++ b/src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp @@ -419,13 +419,15 @@ QList QbsBuildConfigurationFactory::availableSetups(const Kit *k, c BuildInfo *info = createBuildInfo(k, BuildConfiguration::Debug); //: The name of the debug build configuration created by default for a qbs project. info->displayName = tr("Debug"); - info->buildDirectory = defaultBuildDirectory(projectPath, k, info->displayName); + //: Non-ASCII characters in directory suffix may cause build issues. + info->buildDirectory = defaultBuildDirectory(projectPath, k, tr("Debug", "Shadow build directory suffix")); result << info; info = createBuildInfo(k, BuildConfiguration::Release); //: The name of the release build configuration created by default for a qbs project. info->displayName = tr("Release"); - info->buildDirectory = defaultBuildDirectory(projectPath, k, info->displayName); + //: Non-ASCII characters in directory suffix may cause build issues. + info->buildDirectory = defaultBuildDirectory(projectPath, k, tr("Release", "Shadow build directory suffix")); result << info; return result; From bb02fba9c9a348ddc3cdae7bf41f0e200d095bd3 Mon Sep 17 00:00:00 2001 From: hjk Date: Wed, 15 Apr 2015 18:48:32 +0200 Subject: [PATCH 04/27] Debugger: Fix WatchItem color display Name and type columns were not properly grayed out. Change-Id: I4120329e6d8f4e6fa33859056cafd07f69b642bd Reviewed-by: Christian Stenger --- .../debugger/debuggertooltipmanager.cpp | 2 +- src/plugins/debugger/watchhandler.cpp | 32 ++++++++++--------- src/plugins/debugger/watchhandler.h | 2 +- 3 files changed, 19 insertions(+), 17 deletions(-) diff --git a/src/plugins/debugger/debuggertooltipmanager.cpp b/src/plugins/debugger/debuggertooltipmanager.cpp index b3c64958a72..9b7556d5547 100644 --- a/src/plugins/debugger/debuggertooltipmanager.cpp +++ b/src/plugins/debugger/debuggertooltipmanager.cpp @@ -219,7 +219,7 @@ ToolTipWatchItem::ToolTipWatchItem(WatchItem *item) value = item->displayValue(); type = item->displayType(); iname = item->iname; - valueColor = item->valueColor(); + valueColor = item->valueColor(1); expandable = item->hasChildren(); expression = item->expression(); foreach (TreeItem *child, item->children()) diff --git a/src/plugins/debugger/watchhandler.cpp b/src/plugins/debugger/watchhandler.cpp index cc27ae30c1d..a77b2d57387 100644 --- a/src/plugins/debugger/watchhandler.cpp +++ b/src/plugins/debugger/watchhandler.cpp @@ -776,21 +776,24 @@ QString WatchItem::displayType() const return result; } -QColor WatchItem::valueColor() const +QColor WatchItem::valueColor(int column) const { - using Utils::Theme; - Theme *theme = Utils::creatorTheme(); - if (watchModel()) { - if (!valueEnabled) - return theme->color(Theme::Debugger_WatchItem_ValueInvalid); - if (!watchModel()->m_contentsValid && !isInspect()) - return theme->color(Theme::Debugger_WatchItem_ValueInvalid); - if (value.isEmpty()) // This might still show 0x... - return theme->color(Theme::Debugger_WatchItem_ValueInvalid); - if (value != watchModel()->m_valueCache.value(iname)) - return theme->color(Theme::Debugger_WatchItem_ValueChanged); + Theme::Color color = Theme::Debugger_WatchItem_ValueNormal; + if (const WatchModel *model = watchModel()) { + if (!model->m_contentsValid && !isInspect()) { + color = Theme::Debugger_WatchItem_ValueInvalid; + } else if (column == 1) { + if (!valueEnabled) + color = Theme::Debugger_WatchItem_ValueInvalid; + else if (!model->m_contentsValid && !isInspect()) + color = Theme::Debugger_WatchItem_ValueInvalid; + else if (column == 1 && value.isEmpty()) // This might still show 0x... + color = Theme::Debugger_WatchItem_ValueInvalid; + else if (column == 1 && value != model->m_valueCache.value(iname)) + color = Theme::Debugger_WatchItem_ValueChanged; + } } - return theme->color(Theme::Debugger_WatchItem_ValueNormal); + return creatorTheme()->color(color); } QVariant WatchItem::data(int column, int role) const @@ -837,8 +840,7 @@ QVariant WatchItem::data(int column, int role) const ? toToolTip() : QVariant(); case Qt::ForegroundRole: - if (column == 1) - return valueColor(); + return valueColor(column); case LocalsExpressionRole: return expression(); diff --git a/src/plugins/debugger/watchhandler.h b/src/plugins/debugger/watchhandler.h index 0d9f53abec3..b01a3110c47 100644 --- a/src/plugins/debugger/watchhandler.h +++ b/src/plugins/debugger/watchhandler.h @@ -107,7 +107,7 @@ public: QVariant editValue() const; int editType() const; - QColor valueColor() const; + QColor valueColor(int column) const; int requestedFormat() const; WatchItem *findItem(const QByteArray &iname); From 56b04c1408431886909b880d78f4e6c10d0c3d29 Mon Sep 17 00:00:00 2001 From: Ulf Hermann Date: Mon, 13 Apr 2015 17:53:38 +0200 Subject: [PATCH 05/27] Timeline: Don't mark parameters as Q_UNUSED if we use them Change-Id: If073ef1c8f99afd07401243bd922770ca52187ae Reviewed-by: Joerg Bornemann --- src/libs/timeline/timelinerenderer.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/libs/timeline/timelinerenderer.cpp b/src/libs/timeline/timelinerenderer.cpp index 48690c6a9f5..3d7b169282f 100644 --- a/src/libs/timeline/timelinerenderer.cpp +++ b/src/libs/timeline/timelinerenderer.cpp @@ -203,7 +203,6 @@ void TimelineRenderer::mouseMoveEvent(QMouseEvent *event) void TimelineRenderer::hoverMoveEvent(QHoverEvent *event) { Q_D(TimelineRenderer); - Q_UNUSED(event); d->manageHovered(event->pos().x(), event->pos().y()); if (d->currentSelection.eventIndex == -1) event->setAccepted(false); From ddbcaf59ec83bccb9a2cbb3024ae3d80a2222f28 Mon Sep 17 00:00:00 2001 From: Ulf Hermann Date: Mon, 13 Apr 2015 16:37:09 +0200 Subject: [PATCH 06/27] Timeline: Check various members of TimelineOverviewRenderer for sanity In some transitional states we could end up without a zoomControl or a model. Make sure we won't access it then. Change-Id: I20b2363aae5fd860e97b393a65be20da26cec437 Reviewed-by: Joerg Bornemann --- src/libs/timeline/timelineoverviewrenderer.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/libs/timeline/timelineoverviewrenderer.cpp b/src/libs/timeline/timelineoverviewrenderer.cpp index 765e346ef6f..ab3a09cd5d9 100644 --- a/src/libs/timeline/timelineoverviewrenderer.cpp +++ b/src/libs/timeline/timelineoverviewrenderer.cpp @@ -54,6 +54,11 @@ QSGNode *TimelineOverviewRenderer::updatePaintNode(QSGNode *oldNode, Q_D(TimelineOverviewRenderer); Q_UNUSED(updatePaintNodeData) + if (!d->model || d->model->isEmpty() || !d->zoomer || d->zoomer->traceDuration() <= 0) { + delete oldNode; + return 0; + } + if (d->modelDirty) { delete d->renderState; d->renderState = 0; From c45c2c289df9b55f1dcfd2133a56f21d7f66fd75 Mon Sep 17 00:00:00 2001 From: Ulf Hermann Date: Tue, 14 Apr 2015 18:43:42 +0200 Subject: [PATCH 07/27] Timeline: assert that render state is empty when we build node tree Change-Id: If1ea56b5a885d17a38ab0cab29f7700b485a9b82 Reviewed-by: Joerg Bornemann --- src/libs/timeline/timelinerenderstate.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/libs/timeline/timelinerenderstate.cpp b/src/libs/timeline/timelinerenderstate.cpp index 75238660729..725946def7a 100644 --- a/src/libs/timeline/timelinerenderstate.cpp +++ b/src/libs/timeline/timelinerenderstate.cpp @@ -29,6 +29,7 @@ ****************************************************************************/ #include "timelinerenderstate_p.h" +#include namespace Timeline { @@ -139,6 +140,8 @@ void TimelineRenderState::assembleNodeTree(const TimelineModel *model, int defau int defaultRowOffset) { Q_D(TimelineRenderState); + QTC_ASSERT(isEmpty(), return); + for (int pass = 0; pass < d->passes.length(); ++pass) { const TimelineRenderPass::State *passState = d->passes[pass]; if (!passState) From 8425e198c1cbc45183f3ef5747da5e11e6a8f5b4 Mon Sep 17 00:00:00 2001 From: Ulf Hermann Date: Thu, 9 Apr 2015 15:16:09 +0200 Subject: [PATCH 08/27] Timeline: Be more exact about model height changes. Emit the signal every time the height changes, but not if it doesn't. Change-Id: I3a3da737bc99ae99ac6d5690c55c21d94cf5b647 Reviewed-by: Joerg Bornemann --- src/libs/timeline/timelinemodel.cpp | 29 ++++++++++--------- .../timelinemodel/tst_timelinemodel.cpp | 9 ++++++ 2 files changed, 25 insertions(+), 13 deletions(-) diff --git a/src/libs/timeline/timelinemodel.cpp b/src/libs/timeline/timelinemodel.cpp index 2b1d7d50cc1..5498077bfd8 100644 --- a/src/libs/timeline/timelinemodel.cpp +++ b/src/libs/timeline/timelinemodel.cpp @@ -121,8 +121,10 @@ void TimelineModel::setCollapsedRowCount(int rows) if (d->collapsedRowCount != rows) { d->collapsedRowCount = rows; emit collapsedRowCountChanged(); - if (!d->expanded) + if (!d->expanded) { emit rowCountChanged(); + emit heightChanged(); // collapsed rows have a fixed size + } } } @@ -136,12 +138,16 @@ void TimelineModel::setExpandedRowCount(int rows) { Q_D(TimelineModel); if (d->expandedRowCount != rows) { + int prevHeight = height(); if (d->rowOffsets.length() > rows) d->rowOffsets.resize(rows); d->expandedRowCount = rows; emit expandedRowCountChanged(); - if (d->expanded) + if (d->expanded) { emit rowCountChanged(); + if (height() != prevHeight) + emit heightChanged(); + } } } @@ -156,25 +162,16 @@ TimelineModel::TimelineModelPrivate::TimelineModelPrivate(int modelId, const QSt { } -void TimelineModel::TimelineModelPrivate::init(TimelineModel *q) -{ - q_ptr = q; - connect(q,SIGNAL(expandedChanged()),q,SIGNAL(heightChanged())); - connect(q,SIGNAL(hiddenChanged()),q,SIGNAL(heightChanged())); - connect(q,SIGNAL(emptyChanged()),q,SIGNAL(heightChanged())); -} - - TimelineModel::TimelineModel(TimelineModelPrivate &dd, QObject *parent) : QObject(parent), d_ptr(&dd) { - d_ptr->init(this); + d_ptr->q_ptr = this; } TimelineModel::TimelineModel(int modelId, const QString &displayName, QObject *parent) : QObject(parent), d_ptr(new TimelineModelPrivate(modelId, displayName)) { - d_ptr->init(this); + d_ptr->q_ptr = this; } TimelineModel::~TimelineModel() @@ -492,8 +489,11 @@ void TimelineModel::setExpanded(bool expanded) { Q_D(TimelineModel); if (expanded != d->expanded) { + int prevHeight = height(); d->expanded = expanded; emit expandedChanged(); + if (prevHeight != height()) + emit heightChanged(); if (d->collapsedRowCount != d->expandedRowCount) emit rowCountChanged(); } @@ -509,8 +509,11 @@ void TimelineModel::setHidden(bool hidden) { Q_D(TimelineModel); if (hidden != d->hidden) { + int prevHeight = height(); d->hidden = hidden; emit hiddenChanged(); + if (height() != prevHeight) + emit heightChanged(); } } diff --git a/tests/auto/timeline/timelinemodel/tst_timelinemodel.cpp b/tests/auto/timeline/timelinemodel/tst_timelinemodel.cpp index 078bcbb04eb..0c8032ae7ad 100644 --- a/tests/auto/timeline/timelinemodel/tst_timelinemodel.cpp +++ b/tests/auto/timeline/timelinemodel/tst_timelinemodel.cpp @@ -227,14 +227,23 @@ void tst_TimelineModel::rowOffset() void tst_TimelineModel::height() { DummyModel dummy; + QSignalSpy spy(&dummy, SIGNAL(heightChanged())); QCOMPARE(dummy.height(), 0); dummy.loadData(); + QCOMPARE(spy.count(), 1); QCOMPARE(dummy.height(), 2 * DefaultRowHeight); dummy.setExpanded(true); + QCOMPARE(spy.count(), 2); QCOMPARE(dummy.height(), 3 * DefaultRowHeight); dummy.setExpandedRowHeight(1, 80); + QCOMPARE(spy.count(), 3); QCOMPARE(dummy.height(), 2 * DefaultRowHeight + 80); + dummy.setHidden(true); + QCOMPARE(spy.count(), 4); + QCOMPARE(dummy.height(), 0); dummy.clear(); + // When clearing the height can change several times in a row. + QVERIFY(spy.count() > 4); dummy.loadData(); dummy.setExpanded(true); QCOMPARE(dummy.rowHeight(1), DefaultRowHeight); // Make sure the row height gets reset. From 7b1a421fbfb0b5c88f851f2ba088bd07896c10f6 Mon Sep 17 00:00:00 2001 From: Ulf Hermann Date: Wed, 8 Apr 2015 19:14:33 +0200 Subject: [PATCH 09/27] Timeline: Test TimelineModelAggregator Change-Id: I327a12212f6e0d842ed2c230a4d489a3178033d0 Reviewed-by: Joerg Bornemann --- tests/auto/timeline/timeline.pro | 3 +- tests/auto/timeline/timeline.qbs | 1 + .../timelinemodelaggregator.pro | 5 + .../timelinemodelaggregator.qbs | 14 ++ .../tst_timelinemodelaggregator.cpp | 166 ++++++++++++++++++ 5 files changed, 188 insertions(+), 1 deletion(-) create mode 100644 tests/auto/timeline/timelinemodelaggregator/timelinemodelaggregator.pro create mode 100644 tests/auto/timeline/timelinemodelaggregator/timelinemodelaggregator.qbs create mode 100644 tests/auto/timeline/timelinemodelaggregator/tst_timelinemodelaggregator.cpp diff --git a/tests/auto/timeline/timeline.pro b/tests/auto/timeline/timeline.pro index 509a6c2a288..86bf4342bbd 100644 --- a/tests/auto/timeline/timeline.pro +++ b/tests/auto/timeline/timeline.pro @@ -2,8 +2,9 @@ include(../../../qtcreator.pri) TEMPLATE = subdirs SUBDIRS = \ + timelineabstractrenderer \ timelinemodel \ - timelineabstractrenderer + timelinemodelaggregator minQtVersion(5,4,0) { SUBDIRS += \ diff --git a/tests/auto/timeline/timeline.qbs b/tests/auto/timeline/timeline.qbs index ebc2d65bd67..a7121bedcae 100644 --- a/tests/auto/timeline/timeline.qbs +++ b/tests/auto/timeline/timeline.qbs @@ -7,6 +7,7 @@ Project { + "/src/libs/timeline" references: [ "timelinemodel/timelinemodel.qbs", + "timelinemodelaggregator/timelinemodelaggregator.qbs", "timelineabstractrenderer/timelineabstractrenderer.qbs", "timelineitemsrenderpass/timelineitemsrenderpass.qbs", ] diff --git a/tests/auto/timeline/timelinemodelaggregator/timelinemodelaggregator.pro b/tests/auto/timeline/timelinemodelaggregator/timelinemodelaggregator.pro new file mode 100644 index 00000000000..61a8a31c28e --- /dev/null +++ b/tests/auto/timeline/timelinemodelaggregator/timelinemodelaggregator.pro @@ -0,0 +1,5 @@ +QTC_LIB_DEPENDS += timeline +include(../../qttest.pri) + +SOURCES += \ + tst_timelinemodelaggregator.cpp diff --git a/tests/auto/timeline/timelinemodelaggregator/timelinemodelaggregator.qbs b/tests/auto/timeline/timelinemodelaggregator/timelinemodelaggregator.qbs new file mode 100644 index 00000000000..563b4fd1e30 --- /dev/null +++ b/tests/auto/timeline/timelinemodelaggregator/timelinemodelaggregator.qbs @@ -0,0 +1,14 @@ +import qbs + +QtcAutotest { + Depends { name: "Timeline" } + Depends { name: "Qt.gui" } + + name: "TimelineModelAggregator autotest" + Group { + name: "Test sources" + files: [ + "tst_timelinemodelaggregator.cpp" + ] + } +} diff --git a/tests/auto/timeline/timelinemodelaggregator/tst_timelinemodelaggregator.cpp b/tests/auto/timeline/timelinemodelaggregator/tst_timelinemodelaggregator.cpp new file mode 100644 index 00000000000..5eb229c7df7 --- /dev/null +++ b/tests/auto/timeline/timelinemodelaggregator/tst_timelinemodelaggregator.cpp @@ -0,0 +1,166 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms and +** conditions see http://www.qt.io/terms-conditions. For further information +** use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 or version 3 as published by the Free +** Software Foundation and appearing in the file LICENSE.LGPLv21 and +** LICENSE.LGPLv3 included in the packaging of this file. Please review the +** following information to ensure the GNU Lesser General Public License +** requirements will be met: https://www.gnu.org/licenses/lgpl.html and +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, The Qt Company gives you certain additional +** rights. These rights are described in The Qt Company LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +****************************************************************************/ + +#include +#include + +class tst_TimelineModelAggregator : public QObject +{ + Q_OBJECT + +private slots: + void height(); + void addRemoveModel(); + void prevNext(); +}; + +class HeightTestModel : public Timeline::TimelineModel { +public: + HeightTestModel() : TimelineModel(2, QString()) + { + insert(0, 1, 1); + } +}; + +void tst_TimelineModelAggregator::height() +{ + Timeline::TimelineModelAggregator aggregator(0); + QCOMPARE(aggregator.height(), 0); + + Timeline::TimelineModel *model = new Timeline::TimelineModel(25, QString()); + aggregator.addModel(model); + QCOMPARE(aggregator.height(), 0); + aggregator.addModel(new HeightTestModel); + QVERIFY(aggregator.height() > 0); + aggregator.clear(); + QCOMPARE(aggregator.height(), 0); +} + +void tst_TimelineModelAggregator::addRemoveModel() +{ + Timeline::TimelineNotesModel notes; + Timeline::TimelineModelAggregator aggregator(¬es); + QSignalSpy spy(&aggregator, SIGNAL(modelsChanged())); + + QCOMPARE(aggregator.notes(), ¬es); + + Timeline::TimelineModel *model1 = new Timeline::TimelineModel(25, QString()); + Timeline::TimelineModel *model2 = new Timeline::TimelineModel(26, QString()); + aggregator.addModel(model1); + QCOMPARE(spy.count(), 1); + QCOMPARE(aggregator.modelCount(), 1); + QCOMPARE(aggregator.model(0), model1); + QCOMPARE(aggregator.models().count(), 1); + + aggregator.addModel(model2); + QCOMPARE(spy.count(), 2); + QCOMPARE(aggregator.modelCount(), 2); + QCOMPARE(aggregator.model(1), model2); + QCOMPARE(aggregator.models().count(), 2); + + QCOMPARE(aggregator.modelIndexById(25), 0); + QCOMPARE(aggregator.modelIndexById(26), 1); + QCOMPARE(aggregator.modelIndexById(27), -1); + + QCOMPARE(aggregator.modelOffset(0), 0); + QCOMPARE(aggregator.modelOffset(1), 0); + + aggregator.clear(); + QCOMPARE(spy.count(), 3); + QCOMPARE(aggregator.modelCount(), 0); +} + +class PrevNextTestModel : public Timeline::TimelineModel +{ +public: + PrevNextTestModel(int x) : TimelineModel(x, QString()) + { + for (int i = 0; i < 20; ++i) + insert(i + x, i * x, x); + } +}; + +void tst_TimelineModelAggregator::prevNext() +{ + Timeline::TimelineModelAggregator aggregator(0); + aggregator.addModel(new PrevNextTestModel(1)); + aggregator.addModel(new PrevNextTestModel(2)); + aggregator.addModel(new PrevNextTestModel(3)); + + // Add an empty model to trigger the special code paths that skip it + aggregator.addModel(new Timeline::TimelineModel(4, QString())); + QLatin1String item("item"); + QLatin1String model("model"); + QVariantMap result; + + { + int indexes[] = {-1, -1, -1}; + int lastModel = -1; + int lastIndex = -1; + for (int i = 0; i < 60; ++i) { + result = aggregator.nextItem(lastModel, lastIndex, -1); + int nextModel = result.value(model).toInt(); + int nextIndex = result.value(item).toInt(); + QVERIFY(nextModel < 3); + QVERIFY(nextModel >= 0); + QCOMPARE(nextIndex, ++indexes[nextModel]); + lastModel = nextModel; + lastIndex = nextIndex; + } + + result = aggregator.nextItem(lastModel, lastIndex, -1); + QCOMPARE(result.value(model).toInt(), 0); + QCOMPARE(result.value(item).toInt(), 0); + } + + { + int indexes[] = {20, 20, 20}; + int lastModel = -1; + int lastIndex = -1; + for (int i = 0; i < 60; ++i) { + result = aggregator.prevItem(lastModel, lastIndex, -1); + int prevModel = result.value(model).toInt(); + int prevIndex = result.value(item).toInt(); + QVERIFY(prevModel < 3); + QVERIFY(prevModel >= 0); + QCOMPARE(prevIndex, --indexes[prevModel]); + lastModel = prevModel; + lastIndex = prevIndex; + } + + result = aggregator.prevItem(lastModel, lastIndex, -1); + QCOMPARE(result.value(model).toInt(), 2); + QCOMPARE(result.value(item).toInt(), 19); + } +} + +QTEST_MAIN(tst_TimelineModelAggregator) + +#include "tst_timelinemodelaggregator.moc" From 171d16c6fb56c202efb7a3e79e7121dadac85265 Mon Sep 17 00:00:00 2001 From: Ulf Hermann Date: Thu, 9 Apr 2015 15:38:59 +0200 Subject: [PATCH 10/27] Timeline: Be more exact about height of model aggregator Only emit the change signal if the height has actually changed. Change-Id: Ic4bf67f25cb4a7f204815b4e6b0c6bd88c71944a Reviewed-by: Joerg Bornemann --- src/libs/timeline/timelinemodelaggregator.cpp | 9 +++++---- .../tst_timelinemodelaggregator.cpp | 4 ++++ 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/libs/timeline/timelinemodelaggregator.cpp b/src/libs/timeline/timelinemodelaggregator.cpp index bad5462fc5e..b363752058a 100644 --- a/src/libs/timeline/timelinemodelaggregator.cpp +++ b/src/libs/timeline/timelinemodelaggregator.cpp @@ -53,10 +53,6 @@ TimelineModelAggregator::TimelineModelAggregator(TimelineNotesModel *notes, QObj : QObject(parent), d(new TimelineModelAggregatorPrivate(this)) { d->notesModel = notes; - connect(this, &TimelineModelAggregator::modelsChanged, - this, &TimelineModelAggregator::heightChanged); - connect(this, &TimelineModelAggregator::stateChanged, - this, &TimelineModelAggregator::heightChanged); } TimelineModelAggregator::~TimelineModelAggregator() @@ -76,6 +72,8 @@ void TimelineModelAggregator::addModel(TimelineModel *m) if (d->notesModel) d->notesModel->addTimelineModel(m); emit modelsChanged(); + if (m->height() != 0) + emit heightChanged(); } const TimelineModel *TimelineModelAggregator::model(int modelIndex) const @@ -98,10 +96,13 @@ TimelineNotesModel *TimelineModelAggregator::notes() const void TimelineModelAggregator::clear() { + int prevHeight = height(); d->modelList.clear(); if (d->notesModel) d->notesModel->clear(); emit modelsChanged(); + if (height() != prevHeight) + emit heightChanged(); } int TimelineModelAggregator::modelOffset(int modelIndex) const diff --git a/tests/auto/timeline/timelinemodelaggregator/tst_timelinemodelaggregator.cpp b/tests/auto/timeline/timelinemodelaggregator/tst_timelinemodelaggregator.cpp index 5eb229c7df7..5de05069d1c 100644 --- a/tests/auto/timeline/timelinemodelaggregator/tst_timelinemodelaggregator.cpp +++ b/tests/auto/timeline/timelinemodelaggregator/tst_timelinemodelaggregator.cpp @@ -54,13 +54,17 @@ void tst_TimelineModelAggregator::height() Timeline::TimelineModelAggregator aggregator(0); QCOMPARE(aggregator.height(), 0); + QSignalSpy heightSpy(&aggregator, SIGNAL(heightChanged())); Timeline::TimelineModel *model = new Timeline::TimelineModel(25, QString()); aggregator.addModel(model); QCOMPARE(aggregator.height(), 0); + QCOMPARE(heightSpy.count(), 0); aggregator.addModel(new HeightTestModel); QVERIFY(aggregator.height() > 0); + QCOMPARE(heightSpy.count(), 1); aggregator.clear(); QCOMPARE(aggregator.height(), 0); + QCOMPARE(heightSpy.count(), 2); } void tst_TimelineModelAggregator::addRemoveModel() From bcbf0d84179421706b07578b541ff50c3dfdfe62 Mon Sep 17 00:00:00 2001 From: Sergey Belyashov Date: Thu, 16 Apr 2015 00:24:06 +0300 Subject: [PATCH 11/27] Fix toolchain detection when C compiler specified If someone specifies C compiler instead of C++ one, then extractToolchainPrefix() returns an empty result which causes invalid behaiour on build stage. Task-number: QTCREATORBUG-14250 Change-Id: I94d2a281c6a98178c486019344c6cdc71ac50a49 Reviewed-by: Tobias Hunger --- src/plugins/qbsprojectmanager/defaultpropertyprovider.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/plugins/qbsprojectmanager/defaultpropertyprovider.cpp b/src/plugins/qbsprojectmanager/defaultpropertyprovider.cpp index 97a82d9c59b..9fb3877e21f 100644 --- a/src/plugins/qbsprojectmanager/defaultpropertyprovider.cpp +++ b/src/plugins/qbsprojectmanager/defaultpropertyprovider.cpp @@ -62,7 +62,9 @@ static QString extractToolchainPrefix(QString *compilerName) { QString prefix; if (compilerName->endsWith(QLatin1String("-g++")) - || compilerName->endsWith(QLatin1String("-clang++"))) { + || compilerName->endsWith(QLatin1String("-clang++")) + || compilerName->endsWith(QLatin1String("-gcc")) + || compilerName->endsWith(QLatin1String("-clang"))) { const int idx = compilerName->lastIndexOf(QLatin1Char('-')) + 1; prefix = compilerName->left(idx); compilerName->remove(0, idx); From 93d46b183538ef42d310577971dbf952e510c562 Mon Sep 17 00:00:00 2001 From: Sergey Belyashov Date: Wed, 15 Apr 2015 23:08:40 +0300 Subject: [PATCH 12/27] Updated Russian translation Change-Id: I641f212cd3239c2b211c55599cf92d01766b14db Reviewed-by: Denis Shienkov Reviewed-by: Oswald Buddenhagen --- share/qtcreator/translations/qtcreator_ru.ts | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/share/qtcreator/translations/qtcreator_ru.ts b/share/qtcreator/translations/qtcreator_ru.ts index b78237a6e1e..7b6927eccce 100644 --- a/share/qtcreator/translations/qtcreator_ru.ts +++ b/share/qtcreator/translations/qtcreator_ru.ts @@ -25125,11 +25125,23 @@ These files are preserved. The name of the debug build configuration created by default for a qbs project. Отладка + + Debug + Shadow build directory suffix + Non-ASCII characters in directory suffix may cause build issues. + Debug + Release The name of the release build configuration created by default for a qbs project. Выпуск + + Release + Shadow build directory suffix + Non-ASCII characters in directory suffix may cause build issues. + Release + QbsProjectManager::Internal::QbsBuildConfigurationWidget @@ -25173,7 +25185,7 @@ These files are preserved. Keep going - Не сдаваться + Пропускать ошибки Properties: @@ -25217,11 +25229,11 @@ These files are preserved. Install - Установить + Устанавливать Clean install root - Очищать корень установки + Очищать каталог установки From 8c4624951a08dc462479ea7ec6e9131e5313a157 Mon Sep 17 00:00:00 2001 From: Kai Koehne Date: Thu, 16 Apr 2015 13:56:53 +0200 Subject: [PATCH 13/27] Installer: Remove checks for bin\qmlviewer.exe, bin\linguist.exe We don't package them anymore inside Qt Creator since years. Change-Id: Id624d5cb88960887a10feb0cc0188c786a4be187 Reviewed-by: Eike Ziller --- .../meta/installscript.qs | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/dist/installer/ifw/packages/org.qtproject.qtcreator.application/meta/installscript.qs b/dist/installer/ifw/packages/org.qtproject.qtcreator.application/meta/installscript.qs index 823e827b347..2f392772fba 100644 --- a/dist/installer/ifw/packages/org.qtproject.qtcreator.application/meta/installscript.qs +++ b/dist/installer/ifw/packages/org.qtproject.qtcreator.application/meta/installscript.qs @@ -60,11 +60,8 @@ Component.prototype.beginInstallation = function() else if (installer.value("os") == "mac") component.qtCreatorBinaryPath = component.qtCreatorBinaryPath + "/Qt Creator.app/Contents/MacOS/Qt Creator"; - if ( installer.value("os") === "win" ) { + if ( installer.value("os") === "win" ) component.setStopProcessForUpdateRequest(component.qtCreatorBinaryPath, true); - component.setStopProcessForUpdateRequest("@TargetDir@/bin/linguist.exe", true); - component.setStopProcessForUpdateRequest("@TargetDir@/bin/qmlviewer.exe", true); - } } registerCommonWindowsFileTypeExtensions = function() From 458bcdf6aa882b8cca628333da2b031b6b799bda Mon Sep 17 00:00:00 2001 From: Daniel Teske Date: Thu, 16 Apr 2015 15:27:31 +0200 Subject: [PATCH 14/27] ProjectTree: Fix adding files from context menu We need to retrieve the current node before the dialog opens up. While the dialog has focus, the current node depends on what is visible in the EditorManager. Change-Id: Icdb212e8d837c9cd789e369f76d6a136d46fcaae Task-number: QTCREATORBUG-14295 Reviewed-by: Eike Ziller --- .../projectexplorer/projectexplorer.cpp | 18 +++++++++++------- src/plugins/projectexplorer/projectexplorer.h | 2 +- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp index 5f429755ad3..8d3853d8a02 100644 --- a/src/plugins/projectexplorer/projectexplorer.cpp +++ b/src/plugins/projectexplorer/projectexplorer.cpp @@ -3021,29 +3021,33 @@ void ProjectExplorerPluginPrivate::addNewSubproject() void ProjectExplorerPluginPrivate::handleAddExistingFiles() { - QTC_ASSERT(ProjectTree::currentNode(), return); + Node *node = ProjectTree::currentNode(); + FolderNode *folderNode = node ? node->asFolderNode() : 0; + + QTC_ASSERT(folderNode, return); QStringList fileNames = QFileDialog::getOpenFileNames(ICore::mainWindow(), tr("Add Existing Files"), directoryFor(ProjectTree::currentNode())); if (fileNames.isEmpty()) return; - ProjectExplorerPlugin::addExistingFiles(fileNames); + ProjectExplorerPlugin::addExistingFiles(fileNames, folderNode); } void ProjectExplorerPluginPrivate::addExistingDirectory() { - QTC_ASSERT(ProjectTree::currentNode(), return); + Node *node = ProjectTree::currentNode(); + FolderNode *folderNode = node ? node->asFolderNode() : 0; + + QTC_ASSERT(folderNode, return); SelectableFilesDialogAddDirectory dialog(directoryFor(ProjectTree::currentNode()), QStringList(), ICore::mainWindow()); if (dialog.exec() == QDialog::Accepted) - ProjectExplorerPlugin::addExistingFiles(dialog.selectedFiles()); + ProjectExplorerPlugin::addExistingFiles(dialog.selectedFiles(), folderNode); } -void ProjectExplorerPlugin::addExistingFiles(const QStringList &filePaths) +void ProjectExplorerPlugin::addExistingFiles(const QStringList &filePaths, FolderNode *folderNode) { - Node *node = ProjectTree::currentNode(); - FolderNode *folderNode = node ? node->asFolderNode() : 0; addExistingFiles(folderNode, filePaths); } diff --git a/src/plugins/projectexplorer/projectexplorer.h b/src/plugins/projectexplorer/projectexplorer.h index a4157c36229..e548268f712 100644 --- a/src/plugins/projectexplorer/projectexplorer.h +++ b/src/plugins/projectexplorer/projectexplorer.h @@ -104,7 +104,7 @@ public: const bool forceSkipDeploy = false); static void addExistingFiles(FolderNode *projectNode, const QStringList &filePaths); - static void addExistingFiles(const QStringList &filePaths); + static void addExistingFiles(const QStringList &filePaths, FolderNode *folderNode); static void buildProject(Project *p); /// Normally there's no need to call this function. From 50eab33aac42dcbed2f638fa5e1055d61aa4cae7 Mon Sep 17 00:00:00 2001 From: Daniel Teske Date: Thu, 16 Apr 2015 15:35:02 +0200 Subject: [PATCH 15/27] Android: Detect install failure on Android 5.1 Change-Id: Ib0bb4ff89581a66b21431fe0009003b1f1430021 Reviewed-by: Eskil Abrahamsen Blomfeldt --- src/plugins/android/androiddeployqtstep.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/plugins/android/androiddeployqtstep.cpp b/src/plugins/android/androiddeployqtstep.cpp index 240fa05682b..24a02e511af 100644 --- a/src/plugins/android/androiddeployqtstep.cpp +++ b/src/plugins/android/androiddeployqtstep.cpp @@ -69,6 +69,7 @@ const QLatin1String VerboseOutputKey("VerboseOutput"); const QLatin1String InputFile("InputFile"); const QLatin1String ProFilePathForInputFile("ProFilePathForInputFile"); const QLatin1String InstallFailedInconsistentCertificatesString("INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES"); +const QLatin1String InstallFailedInconsistentCertificatesString2("INSTALL_FAILED_UPDATE_INCOMPATIBLE"); const Core::Id AndroidDeployQtStep::Id("Qt4ProjectManager.AndroidDeployQtStep"); ////////////////// @@ -480,7 +481,8 @@ void AndroidDeployQtStep::processReadyReadStdOutput() void AndroidDeployQtStep::stdOutput(const QString &line) { - if (line.contains(InstallFailedInconsistentCertificatesString)) + if (line.contains(InstallFailedInconsistentCertificatesString) + || line.contains(InstallFailedInconsistentCertificatesString2)) m_installOk = false; emit addOutput(line, BuildStep::NormalOutput, BuildStep::DontAppendNewline); } @@ -496,7 +498,8 @@ void AndroidDeployQtStep::processReadyReadStdError() void AndroidDeployQtStep::stdError(const QString &line) { - if (line.contains(InstallFailedInconsistentCertificatesString)) + if (line.contains(InstallFailedInconsistentCertificatesString) + || line.contains(InstallFailedInconsistentCertificatesString2)) m_installOk = false; emit addOutput(line, BuildStep::ErrorOutput, BuildStep::DontAppendNewline); } From 7d134000415f5d38ab8c47ed2bb436d259ab0465 Mon Sep 17 00:00:00 2001 From: hjk Date: Fri, 17 Apr 2015 10:20:38 +0200 Subject: [PATCH 16/27] Debugger: Remove StdStream dumper test This was testing a bool value, not a stream, and doing that wrong on Windows. Change-Id: I86b1aaea99e77b2aa3c37bb5c9c3e0ba8a90cb05 Reviewed-by: Christian Stenger --- tests/auto/debugger/tst_dumpers.cpp | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/tests/auto/debugger/tst_dumpers.cpp b/tests/auto/debugger/tst_dumpers.cpp index deab2783e16..c07ca861a76 100644 --- a/tests/auto/debugger/tst_dumpers.cpp +++ b/tests/auto/debugger/tst_dumpers.cpp @@ -4383,24 +4383,6 @@ void tst_Dumpers::dumper_data() + Check("v2.3", "[3]", "", "Foo"); - QTest::newRow("StdStream") - << Data("#include \n" - "#include \n", - - "using namespace std;\n" - "ifstream is0, is;\n" - "#ifdef Q_OS_WIN\n" - "is.open(\"C:\\\\Program Files\\\\Windows NT\\\\Accessories\\\\wordpad.exe\");\n" - "#else\n" - "is.open(\"/etc/passwd\");\n" - "#endif\n" - "bool ok = is.good();\n" - "unused(&ok, &is, &is0);\n") - - + Check("is", "", "std::ifstream") - + Check("ok", "true", "bool"); - - QTest::newRow("StdUnorderedMap") << Data("#include \n" "#include \n", From a1181b43050568758af588f3757e0d42dea7eb89 Mon Sep 17 00:00:00 2001 From: Robert Loehning Date: Fri, 17 Apr 2015 14:16:43 +0200 Subject: [PATCH 17/27] Squish: Update tst_WELP04 Tutorial videos from 2014 are slightly different than those from 2013. Change-Id: I7f8c850b89df95a018495740f26bf277a751a5dd Reviewed-by: Christian Stenger --- tests/system/suite_WELP/tst_WELP04/test.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/system/suite_WELP/tst_WELP04/test.py b/tests/system/suite_WELP/tst_WELP04/test.py index 4d4db9e082b..5422d78c25d 100644 --- a/tests/system/suite_WELP/tst_WELP04/test.py +++ b/tests/system/suite_WELP/tst_WELP04/test.py @@ -74,11 +74,11 @@ def main(): # close help widget again to avoid focus issues sendEvent("QCloseEvent", waitForObject(":Help Widget_Help::Internal::HelpWidget")) # check a demonstration video link - replaceEditorContent(waitForObject(searchTut), "embedded linux") + replaceEditorContent(waitForObject(searchTut), "embedded device") test.verify(checkIfObjectExists(getQmlItem("Delegate", ":WelcomePageStyledBar.WelcomePage_QQuickView", False, "id='delegate' radius='0' caption=" - "'Developing Embedded Linux Applications with Qt'")), + "'Device Creation with Qt'")), "Verifying: Link to the expected demonstration video exists.") # exit Qt Creator invokeMenuItem("File", "Exit") From ffc2613d32c04efb4430e38968e1cfde56c8299c Mon Sep 17 00:00:00 2001 From: Daniel Teske Date: Thu, 16 Apr 2015 17:26:27 +0200 Subject: [PATCH 18/27] Fix non responding on being overwhelmed with debug output Change-Id: I0356c71850a6b5a2147ac35cb79ae53e234aa3e0 Task-number: QTCREATORBUG-14096 Reviewed-by: Kai Koehne Reviewed-by: Tobias Hunger --- src/plugins/projectexplorer/applicationlauncher.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/projectexplorer/applicationlauncher.cpp b/src/plugins/projectexplorer/applicationlauncher.cpp index 64577eb28d9..4fe94198340 100644 --- a/src/plugins/projectexplorer/applicationlauncher.cpp +++ b/src/plugins/projectexplorer/applicationlauncher.cpp @@ -126,7 +126,7 @@ ApplicationLauncher::ApplicationLauncher(QObject *parent) connect(WinDebugInterface::instance(), SIGNAL(cannotRetrieveDebugOutput()), this, SLOT(cannotRetrieveDebugOutput())); connect(WinDebugInterface::instance(), SIGNAL(debugOutput(qint64,QString)), - this, SLOT(checkDebugOutput(qint64,QString))); + this, SLOT(checkDebugOutput(qint64,QString)), Qt::BlockingQueuedConnection); #endif #ifdef WITH_JOURNALD connect(JournaldWatcher::instance(), &JournaldWatcher::journaldOutput, From 8e957f09c7bd4a6456881af73ad48b2b8eb1f7ee Mon Sep 17 00:00:00 2001 From: Ulf Hermann Date: Thu, 16 Apr 2015 15:17:17 +0200 Subject: [PATCH 19/27] Doc: Improve CPU Usage Analyzer documentation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add sections about extra command line options and troubleshooting. Change-Id: I2ecd7b32a211321bcf9c31ee65f92386b70958db Reviewed-by: Kari Hautamäki Reviewed-by: Joerg Bornemann --- doc/src/analyze/cpu-usage-analyzer.qdoc | 30 +++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/doc/src/analyze/cpu-usage-analyzer.qdoc b/doc/src/analyze/cpu-usage-analyzer.qdoc index e3eb74cdfdc..432e9fb917d 100644 --- a/doc/src/analyze/cpu-usage-analyzer.qdoc +++ b/doc/src/analyze/cpu-usage-analyzer.qdoc @@ -132,6 +132,14 @@ data, and the processing delay may grow excessively. You should then lower the \uicontrol {Sampling frequency} or the \uicontrol {Stack snapshot size}. + \section2 Adding Command Line Options For Perf + + You can specify additional command line options to be passed to Perf when + recording data in the \uicontrol {Additional arguments} field. You may want + to specify \c{--no-delay} or \c{--no-buffering} to reduce the processing delay. + However, those options are not supported by all versions of Perf and Perf may + not start if an unsupported option is given. + \section1 Analyzing Collected Data The \uicontrol Timeline view displays a graphical representation of CPU @@ -248,4 +256,26 @@ back its own data in a sensible way by checking the output of \c {perf report} or \c {perf script} in the recorded Perf data files. + \section1 Troubleshooting + + The CPU Usage Analyzer might fail to record data for the following reasons: + + \list 1 + \li The connection between the target device and the host may not be + fast enough to transfer the data produced by Perf. Try lowering + the \uicontrol {Stack snapshot size} or + \uicontrol {Sampling Frequency} settings. + \li Perf may be buffering the data forever, never sending it. Add + \c {--no-delay} or \c {--no-buffering} to the + \uicontrol {Additional arguments} field. + \li Some versions of Perf will not start recording unless given a + certain minimum sampling frequency. Try with a + \uicontrol {Sampling Frequency} of 1000. + \li On some devices, Perf support is not very stable and the Linux + kernel may randomly fail to record data after some time. Reboot the + device and try again. + \endlist + + Output from the helper program that processes the data is displayed in the + \uicontrol {General Messages} output pane. */ From e488f10c7f630c3f3eba3c37faccbf487adf129c Mon Sep 17 00:00:00 2001 From: Nikolai Kosjar Date: Mon, 20 Apr 2015 12:38:50 +0200 Subject: [PATCH 20/27] Clang: Fix providing clang directory with intrinsics Opening a main.cpp of a Qt Widget Application project that is configured with a GCC toolchain leads to errors [1] like /usr/lib/gcc/x86_64-linux-gnu/4.8/include/ia32intrin.h:41:10: \ error: use of undeclared identifier '__builtin_ia32_bsrsi' due to a wrong determination of the clang directory with intrinsics. The directory was determined as $${LLVM_LIBDIR}/clang/$${LLVM_VERSION}/include whereas $LLVM_VERSION was extracted as e.g. "3.5" from 'llvm-config --version' instead of "3.5.0". The path of clang intrinsics dir shipped with Qt Creator (as package) does also match this version scheme: $QTC_INSTALL_DIR/share/qtcreator/cplusplus/clang/3.4.2/include [1] Visible with qtc.clangcodemodel.verboserun=true Change-Id: I1061912eef437a9889987e638915d2fabe208011 Reviewed-by: hjk Reviewed-by: Eike Ziller --- src/plugins/clangcodemodel/clang_installation.pri | 2 +- src/plugins/clangcodemodel/clangutils.cpp | 15 ++++++++------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/plugins/clangcodemodel/clang_installation.pri b/src/plugins/clangcodemodel/clang_installation.pri index 67a13ff4133..ec2f3749b1f 100644 --- a/src/plugins/clangcodemodel/clang_installation.pri +++ b/src/plugins/clangcodemodel/clang_installation.pri @@ -66,7 +66,7 @@ unix { LLVM_CONFIG = $$findLLVMConfig() LLVM_VERSION = $$system($$LLVM_CONFIG --version 2>/dev/null) - LLVM_VERSION = $$replace(LLVM_VERSION, ^(\\d+\\.\\d+).*$, \\1) + LLVM_VERSION = $$replace(LLVM_VERSION, ^(\\d+\\.\\d+\\.\\d+).*$, \\1) message("... version $$LLVM_VERSION") LLVM_INCLUDEPATH = $$system($$LLVM_CONFIG --includedir 2>/dev/null) diff --git a/src/plugins/clangcodemodel/clangutils.cpp b/src/plugins/clangcodemodel/clangutils.cpp index 8f2f6ddd4d8..0626a1fbde5 100644 --- a/src/plugins/clangcodemodel/clangutils.cpp +++ b/src/plugins/clangcodemodel/clangutils.cpp @@ -151,6 +151,14 @@ QStringList createClangOptions(const ProjectPart::Ptr &pPart, ProjectFile::Kind maybeIncludeBorlandExtensions()); result << CompilerOptionsBuilder::createDefineOptions(pPart->toolchainDefines); result << CompilerOptionsBuilder::createDefineOptions(pPart->projectDefines); + + static const QString resourceDir = getResourceDir(); + if (!resourceDir.isEmpty()) { + result << QLatin1String("-nostdlibinc"); + result << (QLatin1String("-I") + resourceDir); + result << QLatin1String("-undef"); + } + result << CompilerOptionsBuilder::createHeaderPathOptions(pPart->headerPaths, isBlacklisted); // Inject header file @@ -164,13 +172,6 @@ QStringList createClangOptions(const ProjectPart::Ptr &pPart, ProjectFile::Kind if (!pPart->projectConfigFile.isEmpty()) result << QLatin1String("-include") << pPart->projectConfigFile; - static const QString resourceDir = getResourceDir(); - if (!resourceDir.isEmpty()) { - result << QLatin1String("-nostdlibinc"); - result << (QLatin1String("-I") + resourceDir); - result << QLatin1String("-undef"); - } - result << QLatin1String("-fmessage-length=0"); result << QLatin1String("-fdiagnostics-show-note-include-stack"); result << QLatin1String("-fmacro-backtrace-limit=0"); From 5d326c523e375167ee9f9c228a998fb8708ddffb Mon Sep 17 00:00:00 2001 From: Christian Stenger Date: Tue, 21 Apr 2015 09:32:14 +0200 Subject: [PATCH 21/27] iOS: Fix detection of device information for older Xcode Task-number: QTCREATORBUG-14072 Change-Id: Ia69aebcb4183ccca7ce8d2332b1482cbefba00a7 Reviewed-by: Eike Ziller --- src/plugins/ios/iostoolhandler.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/ios/iostoolhandler.cpp b/src/plugins/ios/iostoolhandler.cpp index ed3aadaba07..bfc0dcf7ac7 100644 --- a/src/plugins/ios/iostoolhandler.cpp +++ b/src/plugins/ios/iostoolhandler.cpp @@ -443,7 +443,7 @@ void IosToolHandlerPrivate::processXml() else if (statusStr.compare(QLatin1String("failure"), Qt::CaseInsensitive) == 0) status = Ios::IosToolHandler::Failure; emit didTransferApp(bundlePath, deviceId, status); - } else if (elName == QLatin1String("device_info")) { + } else if (elName == QLatin1String("device_info") || elName == QLatin1String("deviceinfo")) { stack.append(ParserState(ParserState::DeviceInfo)); } else if (elName == QLatin1String("inferior_pid")) { stack.append(ParserState(ParserState::InferiorPid)); From 6a1a6ae557354a0753ed68b6dba460eb9aa28959 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Tue, 21 Apr 2015 16:50:28 +0200 Subject: [PATCH 22/27] Wizards: Fix import for .ui.qml file Change-Id: I448dbdb9fcbd72e6388cd15268447c08eebc68f0 Reviewed-by: Robert Loehning --- share/qtcreator/templates/qtquick/qtquick_2_4/MainForm.ui.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/share/qtcreator/templates/qtquick/qtquick_2_4/MainForm.ui.qml b/share/qtcreator/templates/qtquick/qtquick_2_4/MainForm.ui.qml index 2e696443642..2443b996e2d 100644 --- a/share/qtcreator/templates/qtquick/qtquick_2_4/MainForm.ui.qml +++ b/share/qtcreator/templates/qtquick/qtquick_2_4/MainForm.ui.qml @@ -1,4 +1,4 @@ -import QtQuick 2.3 +import QtQuick 2.4 Rectangle { property alias mouseArea: mouseArea From 6302a28c977bbf9b6914f68b2d8565ea6d2921d3 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Tue, 21 Apr 2015 14:48:04 +0200 Subject: [PATCH 23/27] Fix translation of help navigation panes Change-Id: Ia82609d55311698ca675943cdfe7b2b91d6f59c2 Task-number: QTCREATORBUG-14241 Reviewed-by: hjk --- src/plugins/help/helpwidget.cpp | 8 ++++---- src/plugins/help/searchwidget.cpp | 3 ++- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/plugins/help/helpwidget.cpp b/src/plugins/help/helpwidget.cpp index 0d62fa81a1c..69d07e4b21c 100644 --- a/src/plugins/help/helpwidget.cpp +++ b/src/plugins/help/helpwidget.cpp @@ -303,7 +303,7 @@ void HelpWidget::addSideBar() auto contentWindow = new ContentWindow; auto contentItem = new Core::SideBarItem(contentWindow, QLatin1String(Constants::HELP_CONTENTS)); contentWindow->setOpenInNewPageActionVisible(supportsNewPages); - contentWindow->setWindowTitle(tr(Constants::SB_CONTENTS)); + contentWindow->setWindowTitle(HelpPlugin::tr(Constants::SB_CONTENTS)); connect(contentWindow, &ContentWindow::linkActivated, this, &HelpWidget::open); m_contentsAction = new QAction(tr(Constants::SB_CONTENTS), this); @@ -315,7 +315,7 @@ void HelpWidget::addSideBar() auto indexWindow = new IndexWindow(); auto indexItem = new Core::SideBarItem(indexWindow, QLatin1String(Constants::HELP_INDEX)); indexWindow->setOpenInNewPageActionVisible(supportsNewPages); - indexWindow->setWindowTitle(tr(Constants::SB_INDEX)); + indexWindow->setWindowTitle(HelpPlugin::tr(Constants::SB_INDEX)); connect(indexWindow, &IndexWindow::linkActivated, this, &HelpWidget::open); connect(indexWindow, &IndexWindow::linksActivated, @@ -327,7 +327,7 @@ void HelpWidget::addSideBar() shortcutMap.insert(QLatin1String(Constants::HELP_INDEX), cmd); auto bookmarkWidget = new BookmarkWidget(&LocalHelpManager::bookmarkManager()); - bookmarkWidget->setWindowTitle(tr(Constants::SB_BOOKMARKS)); + bookmarkWidget->setWindowTitle(HelpPlugin::tr(Constants::SB_BOOKMARKS)); bookmarkWidget->setOpenInNewPageActionVisible(supportsNewPages); auto bookmarkItem = new Core::SideBarItem(bookmarkWidget, QLatin1String(Constants::HELP_BOOKMARKS)); @@ -351,7 +351,7 @@ void HelpWidget::addSideBar() Core::SideBarItem *openPagesItem = 0; if (m_style == ModeWidget) { QWidget *openPagesWidget = OpenPagesManager::instance().openPagesWidget(); - openPagesWidget->setWindowTitle(tr(Constants::SB_OPENPAGES)); + openPagesWidget->setWindowTitle(HelpPlugin::tr(Constants::SB_OPENPAGES)); openPagesItem = new Core::SideBarItem(openPagesWidget, QLatin1String(Constants::HELP_OPENPAGES)); m_openPagesAction = new QAction(tr("Activate Open Help Pages View"), this); diff --git a/src/plugins/help/searchwidget.cpp b/src/plugins/help/searchwidget.cpp index 27dba03a9d5..8a993eb9420 100644 --- a/src/plugins/help/searchwidget.cpp +++ b/src/plugins/help/searchwidget.cpp @@ -30,6 +30,7 @@ #include "searchwidget.h" #include "helpconstants.h" +#include "helpplugin.h" #include "localhelpmanager.h" #include "openpagesmanager.h" @@ -303,7 +304,7 @@ QStringList SearchWidget::currentSearchTerms() const SearchSideBarItem::SearchSideBarItem() : SideBarItem(new SearchWidget, QLatin1String(Constants::HELP_SEARCH)) { - widget()->setWindowTitle(tr(Constants::SB_SEARCH)); + widget()->setWindowTitle(HelpPlugin::tr(Constants::SB_SEARCH)); connect(widget(), SIGNAL(linkActivated(QUrl,QStringList,bool)), this, SIGNAL(linkActivated(QUrl,QStringList,bool))); } From 802a305737b45896acd123ff2dfbb1a5cc28ddfe Mon Sep 17 00:00:00 2001 From: J-P Nurmi Date: Mon, 20 Apr 2015 14:10:49 +0200 Subject: [PATCH 24/27] qmljs: add import completion for QtQml & QtQml.Models Task-number: QTCREATORBUG-13780 Change-Id: I9819e25559848f6635a83522b856da97679c5126 Reviewed-by: Thomas Hartmann --- .../qtcreator/qml-type-descriptions/qt5QtQuick2-bundle.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/share/qtcreator/qml-type-descriptions/qt5QtQuick2-bundle.json b/share/qtcreator/qml-type-descriptions/qt5QtQuick2-bundle.json index 733e0c95449..961697918bb 100644 --- a/share/qtcreator/qml-type-descriptions/qt5QtQuick2-bundle.json +++ b/share/qtcreator/qml-type-descriptions/qt5QtQuick2-bundle.json @@ -25,6 +25,11 @@ "QtPositioning 5.2", "QtPositioning 5.3", "QtPurchasing 1.0", + "QtQml 2.0", + "QtQml 2.1", + "QtQml 2.2", + "QtQml.Models 2.1", + "QtQml.Models 2.2", "QtQuick.Controls 1.0", "QtQuick.Controls 1.1", "QtQuick.Controls 1.2", From 67581c5faa0f219bb16110e0f764e3dda73b4d72 Mon Sep 17 00:00:00 2001 From: J-P Nurmi Date: Mon, 20 Apr 2015 15:24:16 +0200 Subject: [PATCH 25/27] QtQuick templates: add QML files to OTHER_FILES It's nice that main.qml shows up in the project tree under "QML" Change-Id: I4e8be4cc962f2d1c204e7435e0a67a88ea76db5e Reviewed-by: Nikita Baryshnikov Reviewed-by: Thomas Hartmann --- share/qtcreator/templates/qtquick/qtquick_1_1/app.pro | 2 ++ share/qtcreator/templates/qtquick/qtquick_2_1/app.pro | 2 ++ share/qtcreator/templates/qtquick/qtquick_2_2/app.pro | 2 ++ share/qtcreator/templates/qtquick/qtquick_2_3/app.pro | 2 ++ share/qtcreator/templates/qtquick/qtquick_2_4/app.pro | 2 ++ share/qtcreator/templates/qtquick/qtquickcontrols_1_0/app.pro | 2 ++ share/qtcreator/templates/qtquick/qtquickcontrols_1_1/app.pro | 2 ++ share/qtcreator/templates/qtquick/qtquickcontrols_1_2/app.pro | 2 ++ share/qtcreator/templates/qtquick/qtquickcontrols_1_3/app.pro | 2 ++ 9 files changed, 18 insertions(+) diff --git a/share/qtcreator/templates/qtquick/qtquick_1_1/app.pro b/share/qtcreator/templates/qtquick/qtquick_1_1/app.pro index 4c3dc5c8cbf..09cb1138720 100644 --- a/share/qtcreator/templates/qtquick/qtquick_1_1/app.pro +++ b/share/qtcreator/templates/qtquick/qtquick_1_1/app.pro @@ -7,6 +7,8 @@ SOURCES += main.cpp RESOURCES += qml.qrc +OTHER_FILES += main.qml + # Installation path # target.path = diff --git a/share/qtcreator/templates/qtquick/qtquick_2_1/app.pro b/share/qtcreator/templates/qtquick/qtquick_2_1/app.pro index fa61ce669e3..853e385a6a6 100644 --- a/share/qtcreator/templates/qtquick/qtquick_2_1/app.pro +++ b/share/qtcreator/templates/qtquick/qtquick_2_1/app.pro @@ -6,6 +6,8 @@ SOURCES += main.cpp RESOURCES += qml.qrc +OTHER_FILES += main.qml + # Additional import path used to resolve QML modules in Qt Creator's code model # QML_IMPORT_PATH # QML_IMPORT_PATH = diff --git a/share/qtcreator/templates/qtquick/qtquick_2_2/app.pro b/share/qtcreator/templates/qtquick/qtquick_2_2/app.pro index fa61ce669e3..853e385a6a6 100644 --- a/share/qtcreator/templates/qtquick/qtquick_2_2/app.pro +++ b/share/qtcreator/templates/qtquick/qtquick_2_2/app.pro @@ -6,6 +6,8 @@ SOURCES += main.cpp RESOURCES += qml.qrc +OTHER_FILES += main.qml + # Additional import path used to resolve QML modules in Qt Creator's code model # QML_IMPORT_PATH # QML_IMPORT_PATH = diff --git a/share/qtcreator/templates/qtquick/qtquick_2_3/app.pro b/share/qtcreator/templates/qtquick/qtquick_2_3/app.pro index fa61ce669e3..853e385a6a6 100644 --- a/share/qtcreator/templates/qtquick/qtquick_2_3/app.pro +++ b/share/qtcreator/templates/qtquick/qtquick_2_3/app.pro @@ -6,6 +6,8 @@ SOURCES += main.cpp RESOURCES += qml.qrc +OTHER_FILES += main.qml + # Additional import path used to resolve QML modules in Qt Creator's code model # QML_IMPORT_PATH # QML_IMPORT_PATH = diff --git a/share/qtcreator/templates/qtquick/qtquick_2_4/app.pro b/share/qtcreator/templates/qtquick/qtquick_2_4/app.pro index fa61ce669e3..853e385a6a6 100644 --- a/share/qtcreator/templates/qtquick/qtquick_2_4/app.pro +++ b/share/qtcreator/templates/qtquick/qtquick_2_4/app.pro @@ -6,6 +6,8 @@ SOURCES += main.cpp RESOURCES += qml.qrc +OTHER_FILES += main.qml + # Additional import path used to resolve QML modules in Qt Creator's code model # QML_IMPORT_PATH # QML_IMPORT_PATH = diff --git a/share/qtcreator/templates/qtquick/qtquickcontrols_1_0/app.pro b/share/qtcreator/templates/qtquick/qtquickcontrols_1_0/app.pro index 1c260786ad7..f12d122fb03 100644 --- a/share/qtcreator/templates/qtquick/qtquickcontrols_1_0/app.pro +++ b/share/qtcreator/templates/qtquick/qtquickcontrols_1_0/app.pro @@ -6,6 +6,8 @@ SOURCES += main.cpp RESOURCES += qml.qrc +OTHER_FILES += main.qml + # Additional import path used to resolve QML modules in Qt Creator's code model QML_IMPORT_PATH = diff --git a/share/qtcreator/templates/qtquick/qtquickcontrols_1_1/app.pro b/share/qtcreator/templates/qtquick/qtquickcontrols_1_1/app.pro index 1c260786ad7..f12d122fb03 100644 --- a/share/qtcreator/templates/qtquick/qtquickcontrols_1_1/app.pro +++ b/share/qtcreator/templates/qtquick/qtquickcontrols_1_1/app.pro @@ -6,6 +6,8 @@ SOURCES += main.cpp RESOURCES += qml.qrc +OTHER_FILES += main.qml + # Additional import path used to resolve QML modules in Qt Creator's code model QML_IMPORT_PATH = diff --git a/share/qtcreator/templates/qtquick/qtquickcontrols_1_2/app.pro b/share/qtcreator/templates/qtquick/qtquickcontrols_1_2/app.pro index 1c260786ad7..f12d122fb03 100644 --- a/share/qtcreator/templates/qtquick/qtquickcontrols_1_2/app.pro +++ b/share/qtcreator/templates/qtquick/qtquickcontrols_1_2/app.pro @@ -6,6 +6,8 @@ SOURCES += main.cpp RESOURCES += qml.qrc +OTHER_FILES += main.qml + # Additional import path used to resolve QML modules in Qt Creator's code model QML_IMPORT_PATH = diff --git a/share/qtcreator/templates/qtquick/qtquickcontrols_1_3/app.pro b/share/qtcreator/templates/qtquick/qtquickcontrols_1_3/app.pro index 1c260786ad7..103504c15c2 100644 --- a/share/qtcreator/templates/qtquick/qtquickcontrols_1_3/app.pro +++ b/share/qtcreator/templates/qtquick/qtquickcontrols_1_3/app.pro @@ -6,6 +6,8 @@ SOURCES += main.cpp RESOURCES += qml.qrc +OTHER_FILES += main.qml MainForm.ui.qml + # Additional import path used to resolve QML modules in Qt Creator's code model QML_IMPORT_PATH = From db344dfbf4ddb768e1fee5271f16022b49f9a056 Mon Sep 17 00:00:00 2001 From: hjk Date: Wed, 22 Apr 2015 09:40:55 +0200 Subject: [PATCH 26/27] Debugger: Blacklist lldb-platform-* as possible debugger Task-number: QTCREATORBUG-14309 Change-Id: I86bb47138a1e3d76120d1c2d0625a86036715d57 Reviewed-by: Christian Stenger Reviewed-by: Eike Ziller --- src/plugins/debugger/debuggeritemmanager.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/plugins/debugger/debuggeritemmanager.cpp b/src/plugins/debugger/debuggeritemmanager.cpp index 4b97b40e289..b4736f23280 100644 --- a/src/plugins/debugger/debuggeritemmanager.cpp +++ b/src/plugins/debugger/debuggeritemmanager.cpp @@ -251,8 +251,11 @@ void DebuggerItemManager::autoDetectGdbOrLldbDebuggers() dir.setFilter(QDir::Files | QDir::Executable); foreach (const QString &base, path) { dir.setPath(base); - foreach (const QString &entry, dir.entryList()) + foreach (const QString &entry, dir.entryList()) { + if (entry.startsWith(QLatin1String("lldb-platform-"))) + continue; suspects.append(FileName::fromString(dir.absoluteFilePath(entry))); + } } foreach (const FileName &command, suspects) { From c92adf5ab472a8d886034bbfe67aebb22d932270 Mon Sep 17 00:00:00 2001 From: Kai Koehne Date: Wed, 22 Apr 2015 07:33:35 +0000 Subject: [PATCH 27/27] Revert "QtQuick templates: add QML files to OTHER_FILES" This reverts commit 67581c5faa0f219bb16110e0f764e3dda73b4d72. The patch has multiple issues: Removing and renaming the .qml file will leave the 'other' place unaltered. Also, adding new .qml files won't add them to both places. Change-Id: I918aa398f9cd183378982fb15562e8fa66d3ede3 Reviewed-by: Eike Ziller Reviewed-by: J-P Nurmi Reviewed-by: Daniel Teske --- share/qtcreator/templates/qtquick/qtquick_1_1/app.pro | 2 -- share/qtcreator/templates/qtquick/qtquick_2_1/app.pro | 2 -- share/qtcreator/templates/qtquick/qtquick_2_2/app.pro | 2 -- share/qtcreator/templates/qtquick/qtquick_2_3/app.pro | 2 -- share/qtcreator/templates/qtquick/qtquick_2_4/app.pro | 2 -- share/qtcreator/templates/qtquick/qtquickcontrols_1_0/app.pro | 2 -- share/qtcreator/templates/qtquick/qtquickcontrols_1_1/app.pro | 2 -- share/qtcreator/templates/qtquick/qtquickcontrols_1_2/app.pro | 2 -- share/qtcreator/templates/qtquick/qtquickcontrols_1_3/app.pro | 2 -- 9 files changed, 18 deletions(-) diff --git a/share/qtcreator/templates/qtquick/qtquick_1_1/app.pro b/share/qtcreator/templates/qtquick/qtquick_1_1/app.pro index 09cb1138720..4c3dc5c8cbf 100644 --- a/share/qtcreator/templates/qtquick/qtquick_1_1/app.pro +++ b/share/qtcreator/templates/qtquick/qtquick_1_1/app.pro @@ -7,8 +7,6 @@ SOURCES += main.cpp RESOURCES += qml.qrc -OTHER_FILES += main.qml - # Installation path # target.path = diff --git a/share/qtcreator/templates/qtquick/qtquick_2_1/app.pro b/share/qtcreator/templates/qtquick/qtquick_2_1/app.pro index 853e385a6a6..fa61ce669e3 100644 --- a/share/qtcreator/templates/qtquick/qtquick_2_1/app.pro +++ b/share/qtcreator/templates/qtquick/qtquick_2_1/app.pro @@ -6,8 +6,6 @@ SOURCES += main.cpp RESOURCES += qml.qrc -OTHER_FILES += main.qml - # Additional import path used to resolve QML modules in Qt Creator's code model # QML_IMPORT_PATH # QML_IMPORT_PATH = diff --git a/share/qtcreator/templates/qtquick/qtquick_2_2/app.pro b/share/qtcreator/templates/qtquick/qtquick_2_2/app.pro index 853e385a6a6..fa61ce669e3 100644 --- a/share/qtcreator/templates/qtquick/qtquick_2_2/app.pro +++ b/share/qtcreator/templates/qtquick/qtquick_2_2/app.pro @@ -6,8 +6,6 @@ SOURCES += main.cpp RESOURCES += qml.qrc -OTHER_FILES += main.qml - # Additional import path used to resolve QML modules in Qt Creator's code model # QML_IMPORT_PATH # QML_IMPORT_PATH = diff --git a/share/qtcreator/templates/qtquick/qtquick_2_3/app.pro b/share/qtcreator/templates/qtquick/qtquick_2_3/app.pro index 853e385a6a6..fa61ce669e3 100644 --- a/share/qtcreator/templates/qtquick/qtquick_2_3/app.pro +++ b/share/qtcreator/templates/qtquick/qtquick_2_3/app.pro @@ -6,8 +6,6 @@ SOURCES += main.cpp RESOURCES += qml.qrc -OTHER_FILES += main.qml - # Additional import path used to resolve QML modules in Qt Creator's code model # QML_IMPORT_PATH # QML_IMPORT_PATH = diff --git a/share/qtcreator/templates/qtquick/qtquick_2_4/app.pro b/share/qtcreator/templates/qtquick/qtquick_2_4/app.pro index 853e385a6a6..fa61ce669e3 100644 --- a/share/qtcreator/templates/qtquick/qtquick_2_4/app.pro +++ b/share/qtcreator/templates/qtquick/qtquick_2_4/app.pro @@ -6,8 +6,6 @@ SOURCES += main.cpp RESOURCES += qml.qrc -OTHER_FILES += main.qml - # Additional import path used to resolve QML modules in Qt Creator's code model # QML_IMPORT_PATH # QML_IMPORT_PATH = diff --git a/share/qtcreator/templates/qtquick/qtquickcontrols_1_0/app.pro b/share/qtcreator/templates/qtquick/qtquickcontrols_1_0/app.pro index f12d122fb03..1c260786ad7 100644 --- a/share/qtcreator/templates/qtquick/qtquickcontrols_1_0/app.pro +++ b/share/qtcreator/templates/qtquick/qtquickcontrols_1_0/app.pro @@ -6,8 +6,6 @@ SOURCES += main.cpp RESOURCES += qml.qrc -OTHER_FILES += main.qml - # Additional import path used to resolve QML modules in Qt Creator's code model QML_IMPORT_PATH = diff --git a/share/qtcreator/templates/qtquick/qtquickcontrols_1_1/app.pro b/share/qtcreator/templates/qtquick/qtquickcontrols_1_1/app.pro index f12d122fb03..1c260786ad7 100644 --- a/share/qtcreator/templates/qtquick/qtquickcontrols_1_1/app.pro +++ b/share/qtcreator/templates/qtquick/qtquickcontrols_1_1/app.pro @@ -6,8 +6,6 @@ SOURCES += main.cpp RESOURCES += qml.qrc -OTHER_FILES += main.qml - # Additional import path used to resolve QML modules in Qt Creator's code model QML_IMPORT_PATH = diff --git a/share/qtcreator/templates/qtquick/qtquickcontrols_1_2/app.pro b/share/qtcreator/templates/qtquick/qtquickcontrols_1_2/app.pro index f12d122fb03..1c260786ad7 100644 --- a/share/qtcreator/templates/qtquick/qtquickcontrols_1_2/app.pro +++ b/share/qtcreator/templates/qtquick/qtquickcontrols_1_2/app.pro @@ -6,8 +6,6 @@ SOURCES += main.cpp RESOURCES += qml.qrc -OTHER_FILES += main.qml - # Additional import path used to resolve QML modules in Qt Creator's code model QML_IMPORT_PATH = diff --git a/share/qtcreator/templates/qtquick/qtquickcontrols_1_3/app.pro b/share/qtcreator/templates/qtquick/qtquickcontrols_1_3/app.pro index 103504c15c2..1c260786ad7 100644 --- a/share/qtcreator/templates/qtquick/qtquickcontrols_1_3/app.pro +++ b/share/qtcreator/templates/qtquick/qtquickcontrols_1_3/app.pro @@ -6,8 +6,6 @@ SOURCES += main.cpp RESOURCES += qml.qrc -OTHER_FILES += main.qml MainForm.ui.qml - # Additional import path used to resolve QML modules in Qt Creator's code model QML_IMPORT_PATH =