summaryrefslogtreecommitdiff
path: root/src/plugins
diff options
context:
space:
mode:
authorEike Ziller <eike.ziller@digia.com>2014-09-03 16:07:46 +0200
committerEike Ziller <eike.ziller@digia.com>2014-09-03 16:08:02 +0200
commit49db3a450a6d15ae0327b8e3713920ac19320972 (patch)
tree309c83eb1dbb6321845d6a1db8fbc49428b20340 /src/plugins
parentafd56bd8ada761b87c40d80a07cd3b3766b2d2f8 (diff)
parentd030a960a0e6e1dda89e20b60e5252842fe83f49 (diff)
downloadqt-creator-49db3a450a6d15ae0327b8e3713920ac19320972.tar.gz
Merge remote-tracking branch 'origin/3.2'
Conflicts: qtcreator.pri qtcreator.qbs src/plugins/coreplugin/editormanager/editormanager.cpp src/plugins/cppeditor/cppeditor.cpp src/plugins/remotelinux/remotelinuxdebugsupport.cpp src/plugins/texteditor/basetexteditor.cpp Change-Id: I0da7c1cf2506b12d0563795aa8177fc45e97050f
Diffstat (limited to 'src/plugins')
-rw-r--r--src/plugins/clangcodemodel/README2
-rw-r--r--src/plugins/classview/classviewparser.cpp1
-rw-r--r--src/plugins/coreplugin/editormanager/editormanager.cpp1
-rw-r--r--src/plugins/coreplugin/locator/locatorwidget.cpp1
-rw-r--r--src/plugins/coreplugin/mainwindow.cpp1
-rw-r--r--src/plugins/coreplugin/manhattanstyle.cpp3
-rw-r--r--src/plugins/coreplugin/variablemanager.cpp3
-rw-r--r--src/plugins/cppeditor/cppeditor.cpp5
-rw-r--r--src/plugins/cppeditor/cppeditoroutline.cpp9
-rw-r--r--src/plugins/cpptools/cppchecksymbols.cpp8
-rw-r--r--src/plugins/cpptools/cppmodelmanager.cpp1
-rw-r--r--src/plugins/cpptools/cpprefactoringchanges.cpp4
-rw-r--r--src/plugins/cpptools/cpptoolseditorsupport.cpp3
-rw-r--r--src/plugins/cpptools/stringtable.cpp1
-rw-r--r--src/plugins/debugger/cdb/cdbengine.cpp5
-rw-r--r--src/plugins/debugger/debuggeritemmanager.cpp14
-rw-r--r--src/plugins/debugger/debuggerkitinformation.cpp130
-rw-r--r--src/plugins/debugger/debuggerplugin.cpp1
-rw-r--r--src/plugins/debugger/debuggerrunconfigurationaspect.cpp8
-rw-r--r--src/plugins/debugger/gdb/remotegdbserveradapter.cpp32
-rw-r--r--src/plugins/ios/iosprobe.cpp2
-rw-r--r--src/plugins/plugins.pro10
-rw-r--r--src/plugins/projectexplorer/abi.cpp6
-rw-r--r--src/plugins/projectexplorer/settingsaccessor.cpp5
-rw-r--r--src/plugins/qbsprojectmanager/qbsproject.cpp32
-rw-r--r--src/plugins/qbsprojectmanager/qbsproject.h2
-rw-r--r--src/plugins/qbsprojectmanager/qbsrunconfiguration.cpp13
-rw-r--r--src/plugins/qbsprojectmanager/qbsrunconfiguration.h1
-rw-r--r--src/plugins/qmakeprojectmanager/qmakenodes.cpp12
-rw-r--r--src/plugins/qmldesigner/components/integration/designdocument.cpp7
-rw-r--r--src/plugins/qmldesigner/components/navigator/navigatortreemodel.cpp4
-rw-r--r--src/plugins/qmldesigner/componentsplugin/Controls/TabViewSpecifics.qml2
-rw-r--r--src/plugins/qmldesigner/componentsplugin/Controls/TextAreaSpecifics.qml2
-rw-r--r--src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp6
-rw-r--r--src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp6
-rw-r--r--src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp5
-rw-r--r--src/plugins/qmljstools/qmljsmodelmanager.cpp8
-rw-r--r--src/plugins/qtsupport/baseqtversion.cpp6
-rw-r--r--src/plugins/qtsupport/qtsupportconstants.h2
-rw-r--r--src/plugins/remotelinux/remotelinuxdebugsupport.cpp11
-rw-r--r--src/plugins/winrt/winrtdebugsupport.cpp2
41 files changed, 236 insertions, 141 deletions
diff --git a/src/plugins/clangcodemodel/README b/src/plugins/clangcodemodel/README
index 8612113270..2798519798 100644
--- a/src/plugins/clangcodemodel/README
+++ b/src/plugins/clangcodemodel/README
@@ -50,7 +50,7 @@ qmake and rebuild Qt Creator. Watch out for a message like
Project MESSAGE: INCLUDEPATH += /usr/lib/llvm-3.4/include
Project MESSAGE: LIBS += -L/usr/lib/llvm-3.4/lib -lclang
-This indicates that the ClangCodeModel plugin will be build.
+This indicates that the ClangCodeModel plugin will be built.
Enable the plugin
-----------------
diff --git a/src/plugins/classview/classviewparser.cpp b/src/plugins/classview/classviewparser.cpp
index c1ff497d64..828e42d6c4 100644
--- a/src/plugins/classview/classviewparser.cpp
+++ b/src/plugins/classview/classviewparser.cpp
@@ -166,6 +166,7 @@ Parser::Parser(QObject *parent)
d(new ParserPrivate())
{
d->timer = new QTimer(this);
+ d->timer->setObjectName(QLatin1String("ClassViewParser::timer"));
d->timer->setSingleShot(true);
// connect signal/slots
diff --git a/src/plugins/coreplugin/editormanager/editormanager.cpp b/src/plugins/coreplugin/editormanager/editormanager.cpp
index c589fec67e..59cc930b9a 100644
--- a/src/plugins/coreplugin/editormanager/editormanager.cpp
+++ b/src/plugins/coreplugin/editormanager/editormanager.cpp
@@ -472,6 +472,7 @@ void EditorManagerPrivate::init()
m_windowPopup->hide();
m_autoSaveTimer = new QTimer(this);
+ m_autoSaveTimer->setObjectName(QLatin1String("EditorManager::m_autoSaveTimer"));
connect(m_autoSaveTimer, SIGNAL(timeout()), SLOT(autoSave()));
updateAutoSave();
diff --git a/src/plugins/coreplugin/locator/locatorwidget.cpp b/src/plugins/coreplugin/locator/locatorwidget.cpp
index 326c6af077..87703ed11e 100644
--- a/src/plugins/coreplugin/locator/locatorwidget.cpp
+++ b/src/plugins/coreplugin/locator/locatorwidget.cpp
@@ -484,7 +484,6 @@ void LocatorWidget::updateCompletionList(const QString &text)
// cancel the old future
m_entriesWatcher->future().cancel();
- m_entriesWatcher->future().waitForFinished();
QFuture<LocatorFilterEntry> future = QtConcurrent::run(runSearch, filters, searchText);
m_entriesWatcher->setFuture(future);
diff --git a/src/plugins/coreplugin/mainwindow.cpp b/src/plugins/coreplugin/mainwindow.cpp
index 582c1063dc..561bc2b04a 100644
--- a/src/plugins/coreplugin/mainwindow.cpp
+++ b/src/plugins/coreplugin/mainwindow.cpp
@@ -554,6 +554,7 @@ void MainWindow::registerDefaultActions()
m_exitAction = new QAction(icon, tr("E&xit"), this);
cmd = ActionManager::registerAction(m_exitAction, Constants::EXIT, globalContext);
cmd->setDefaultKeySequence(QKeySequence(tr("Ctrl+Q")));
+ cmd->action()->setMenuRole(QAction::QuitRole);
mfile->addAction(cmd, Constants::G_FILE_OTHER);
connect(m_exitAction, SIGNAL(triggered()), this, SLOT(exit()));
diff --git a/src/plugins/coreplugin/manhattanstyle.cpp b/src/plugins/coreplugin/manhattanstyle.cpp
index decd4aac87..f86c36f27a 100644
--- a/src/plugins/coreplugin/manhattanstyle.cpp
+++ b/src/plugins/coreplugin/manhattanstyle.cpp
@@ -778,7 +778,8 @@ void ManhattanStyle::drawControl(ControlElement element, const QStyleOption *opt
Utils::StyleHelper::menuGradient(painter, option->rect, option->rect);
painter->save();
painter->setPen(Utils::StyleHelper::borderColor());
- painter->drawLine(option->rect.bottomLeft(), option->rect.bottomRight());
+ painter->drawLine(option->rect.bottomLeft() + QPointF(0.5, 0.5),
+ option->rect.bottomRight() + QPointF(0.5, 0.5));
painter->restore();
}
break;
diff --git a/src/plugins/coreplugin/variablemanager.cpp b/src/plugins/coreplugin/variablemanager.cpp
index bcc90ea939..bb5920f659 100644
--- a/src/plugins/coreplugin/variablemanager.cpp
+++ b/src/plugins/coreplugin/variablemanager.cpp
@@ -253,8 +253,9 @@ void VariableManager::registerVariable(const QByteArray &variable,
void VariableManager::registerIntVariable(const QByteArray &variable,
const QString &description, const VariableManager::IntFunction &value)
{
+ const VariableManager::IntFunction valuecopy = value; // do not capture a reference in a lambda
registerVariable(variable, description,
- [value]() { return QString::number(value ? value() : 0); });
+ [valuecopy]() { return QString::number(valuecopy ? valuecopy() : 0); });
}
/*!
diff --git a/src/plugins/cppeditor/cppeditor.cpp b/src/plugins/cppeditor/cppeditor.cpp
index cf5228c442..c7f1346b8a 100644
--- a/src/plugins/cppeditor/cppeditor.cpp
+++ b/src/plugins/cppeditor/cppeditor.cpp
@@ -191,7 +191,6 @@ void CppEditorWidget::finalizeInitialization()
});
connect(&d->m_localRenaming, &CppLocalRenaming::processKeyPressNormally,
this, &CppEditorWidget::processKeyNormally);
-
connect(this, SIGNAL(cursorPositionChanged()),
d->m_cppEditorOutline, SLOT(updateIndex()));
@@ -684,6 +683,10 @@ void CppEditorWidget::updateFunctionDeclDefLink()
void CppEditorWidget::updateFunctionDeclDefLinkNow()
{
+ static bool noTracking = qgetenv("QTC_NO_FUNCTION_DECL_DEF_LINK_TRACKING").trimmed() == "1";
+ if (noTracking)
+ return;
+
if (Core::EditorManager::currentEditor()->widget() != this)
return;
diff --git a/src/plugins/cppeditor/cppeditoroutline.cpp b/src/plugins/cppeditor/cppeditoroutline.cpp
index ad28da7b84..969108a50e 100644
--- a/src/plugins/cppeditor/cppeditoroutline.cpp
+++ b/src/plugins/cppeditor/cppeditoroutline.cpp
@@ -82,9 +82,10 @@ private:
CPlusPlus::OverviewModel *m_sourceModel;
};
-QTimer *newSingleShotTimer(QObject *parent, int msInternal)
+QTimer *newSingleShotTimer(QObject *parent, int msInternal, const QString &objectName)
{
QTimer *timer = new QTimer(parent);
+ timer->setObjectName(objectName);
timer->setSingleShot(true);
timer->setInterval(msInternal);
return timer;
@@ -131,10 +132,12 @@ CppEditorOutline::CppEditorOutline(CppEditorWidget *editorWidget)
connect(m_combo, SIGNAL(currentIndexChanged(int)), this, SLOT(updateToolTip()));
// Set up timers
- m_updateTimer = newSingleShotTimer(this, UpdateOutlineIntervalInMs);
+ m_updateTimer = newSingleShotTimer(this, UpdateOutlineIntervalInMs,
+ QLatin1String("CppEditorOutline::m_updateTimer"));
connect(m_updateTimer, SIGNAL(timeout()), this, SLOT(updateNow()));
- m_updateIndexTimer = newSingleShotTimer(this, UpdateOutlineIntervalInMs);
+ m_updateIndexTimer = newSingleShotTimer(this, UpdateOutlineIntervalInMs,
+ QLatin1String("CppEditorOutline::m_updateIndexTimer"));
connect(m_updateIndexTimer, SIGNAL(timeout()), this, SLOT(updateIndexNow()));
}
diff --git a/src/plugins/cpptools/cppchecksymbols.cpp b/src/plugins/cpptools/cppchecksymbols.cpp
index eb6974c470..c1ba4d06f5 100644
--- a/src/plugins/cpptools/cppchecksymbols.cpp
+++ b/src/plugins/cpptools/cppchecksymbols.cpp
@@ -334,7 +334,9 @@ void CheckSymbols::run()
_potentialStatics = collectTypes.statics();
Utils::sort(_macroUses, sortByLinePredicate);
- _doc->clearDiagnosticMessages();
+ // TODO: Handle concurrent (write) access of diagnostic messages and ensure
+ // propagation to the editor widget
+// _doc->clearDiagnosticMessages();
if (!isCanceled()) {
if (_doc->translationUnit()) {
@@ -350,7 +352,9 @@ void CheckSymbols::run()
bool CheckSymbols::warning(unsigned line, unsigned column, const QString &text, unsigned length)
{
Document::DiagnosticMessage m(Document::DiagnosticMessage::Warning, _fileName, line, column, text, length);
- _doc->addDiagnosticMessage(m);
+ // TODO: Handle concurrent (write) access of diagnostic messages and ensure
+ // propagation to the editor widget
+// _doc->addDiagnosticMessage(m);
return false;
}
diff --git a/src/plugins/cpptools/cppmodelmanager.cpp b/src/plugins/cpptools/cppmodelmanager.cpp
index 796a052b95..3ca1f734d0 100644
--- a/src/plugins/cpptools/cppmodelmanager.cpp
+++ b/src/plugins/cpptools/cppmodelmanager.cpp
@@ -233,6 +233,7 @@ CppModelManager::CppModelManager(QObject *parent)
m_dirty = true;
m_delayedGcTimer = new QTimer(this);
+ m_delayedGcTimer->setObjectName(QLatin1String("CppModelManager::m_delayedGcTimer"));
m_delayedGcTimer->setSingleShot(true);
connect(m_delayedGcTimer, SIGNAL(timeout()), this, SLOT(GC()));
diff --git a/src/plugins/cpptools/cpprefactoringchanges.cpp b/src/plugins/cpptools/cpprefactoringchanges.cpp
index 2532f740b0..64d4a1f77d 100644
--- a/src/plugins/cpptools/cpprefactoringchanges.cpp
+++ b/src/plugins/cpptools/cpprefactoringchanges.cpp
@@ -114,10 +114,6 @@ CppRefactoringFileConstPtr CppRefactoringChanges::fileNoEditor(const QString &fi
CppRefactoringFilePtr result(new CppRefactoringFile(document, fileName));
result->m_data = m_data;
- Document::Ptr cppDocument = data()->m_snapshot.document(fileName);
- if (cppDocument)
- result->setCppDocument(cppDocument);
-
return result;
}
diff --git a/src/plugins/cpptools/cpptoolseditorsupport.cpp b/src/plugins/cpptools/cpptoolseditorsupport.cpp
index b3650711d9..1217b874eb 100644
--- a/src/plugins/cpptools/cpptoolseditorsupport.cpp
+++ b/src/plugins/cpptools/cpptoolseditorsupport.cpp
@@ -138,11 +138,13 @@ CppEditorSupport::CppEditorSupport(CppModelManager *modelManager, BaseTextEditor
}
m_updateDocumentTimer = new QTimer(this);
+ m_updateDocumentTimer->setObjectName(QLatin1String("CppEditorSupport::m_updateDocumentTimer"));
m_updateDocumentTimer->setSingleShot(true);
m_updateDocumentTimer->setInterval(m_updateDocumentInterval);
connect(m_updateDocumentTimer, SIGNAL(timeout()), this, SLOT(updateDocumentNow()));
m_updateEditorTimer = new QTimer(this);
+ m_updateEditorTimer->setObjectName(QLatin1String("CppEditorSupport::m_updateEditorTimer"));
m_updateEditorTimer->setInterval(UpdateEditorInterval);
m_updateEditorTimer->setSingleShot(true);
connect(m_updateEditorTimer, SIGNAL(timeout()),
@@ -162,6 +164,7 @@ CppEditorSupport::CppEditorSupport(CppModelManager *modelManager, BaseTextEditor
connect(Core::EditorManager::instance(), SIGNAL(currentEditorChanged(Core::IEditor*)),
this, SLOT(onCurrentEditorChanged()));
m_editorGCTimer = new QTimer(this);
+ m_editorGCTimer->setObjectName(QLatin1String("CppEditorSupport::m_editorGCTimer"));
m_editorGCTimer->setSingleShot(true);
m_editorGCTimer->setInterval(EditorHiddenGCTimeout);
connect(m_editorGCTimer, SIGNAL(timeout()), this, SLOT(releaseResources()));
diff --git a/src/plugins/cpptools/stringtable.cpp b/src/plugins/cpptools/stringtable.cpp
index baa23fff05..a21ecfc748 100644
--- a/src/plugins/cpptools/stringtable.cpp
+++ b/src/plugins/cpptools/stringtable.cpp
@@ -49,6 +49,7 @@ StringTable::StringTable()
m_gcRunner.setAutoDelete(false);
+ m_gcCountDown.setObjectName(QLatin1String("StringTable::m_gcCountDown"));
m_gcCountDown.setSingleShot(true);
m_gcCountDown.setInterval(GCTimeOut);
connect(&m_gcCountDown, SIGNAL(timeout()),
diff --git a/src/plugins/debugger/cdb/cdbengine.cpp b/src/plugins/debugger/cdb/cdbengine.cpp
index b6befa75cd..60cfc3d374 100644
--- a/src/plugins/debugger/cdb/cdbengine.cpp
+++ b/src/plugins/debugger/cdb/cdbengine.cpp
@@ -2828,10 +2828,7 @@ static CPlusPlus::Document::Ptr getParsedDocument(const QString &fileName,
unsigned BreakpointCorrectionContext::fixLineNumber(const QString &fileName,
unsigned lineNumber) const
{
- CPlusPlus::Document::Ptr doc = m_snapshot.document(fileName);
- if (!doc || !doc->translationUnit()->ast())
- doc = getParsedDocument(fileName, m_workingCopy, m_snapshot);
-
+ const CPlusPlus::Document::Ptr doc = getParsedDocument(fileName, m_workingCopy, m_snapshot);
CPlusPlus::FindCdbBreakpoint findVisitor(doc->translationUnit());
const unsigned correctedLine = findVisitor(lineNumber);
if (!correctedLine) {
diff --git a/src/plugins/debugger/debuggeritemmanager.cpp b/src/plugins/debugger/debuggeritemmanager.cpp
index 05a6b428ea..517101ac13 100644
--- a/src/plugins/debugger/debuggeritemmanager.cpp
+++ b/src/plugins/debugger/debuggeritemmanager.cpp
@@ -378,21 +378,21 @@ void DebuggerItemManager::saveDebuggers()
QVariant DebuggerItemManager::registerDebugger(const DebuggerItem &item)
{
- // Force addition when Id is set.
- if (item.id().isValid())
- return addDebugger(item);
-
- // Otherwise, try re-using existing item first.
+ // Try re-using existing item first.
foreach (const DebuggerItem &d, m_debuggers) {
if (d.command() == item.command()
&& d.isAutoDetected() == item.isAutoDetected()
&& d.engineType() == item.engineType()
&& d.displayName() == item.displayName()
- && d.abis() == item.abis())
+ && d.abis() == item.abis()) {
return d.id();
+ }
}
- // Nothing suitable. Create a new id and add the item.
+ // If item already has an id, add it. Otherwise, create a new id.
+ if (item.id().isValid())
+ return addDebugger(item);
+
DebuggerItem di = item;
di.createId();
return addDebugger(di);
diff --git a/src/plugins/debugger/debuggerkitinformation.cpp b/src/plugins/debugger/debuggerkitinformation.cpp
index 2013a478c8..0949118abf 100644
--- a/src/plugins/debugger/debuggerkitinformation.cpp
+++ b/src/plugins/debugger/debuggerkitinformation.cpp
@@ -39,6 +39,7 @@
#include <utils/qtcassert.h>
#include <QFileInfo>
+#include <utility>
using namespace ProjectExplorer;
using namespace Utils;
@@ -73,19 +74,7 @@ QVariant DebuggerKitInformation::defaultValue(Kit *k) const
void DebuggerKitInformation::setup(Kit *k)
{
- // Get one of the available debugger matching the kit's toolchain.
- const ToolChain *tc = ToolChainKitInformation::toolChain(k);
- const Abi toolChainAbi = tc ? tc->targetAbi() : Abi::hostAbi();
-
// This can be anything (Id, binary path, "auto")
- const QVariant rawId = k->value(DebuggerKitInformation::id());
-
- enum {
- NotDetected, DetectedAutomatically, DetectedByFile, DetectedById
- } detection = NotDetected;
- DebuggerEngineType autoEngine = NoEngineType;
- FileName fileName;
-
// With 3.0 we have:
// <value type="QString" key="Debugger.Information">{75ecf347-f221-44c3-b613-ea1d29929cd4}</value>
// Before we had:
@@ -98,68 +87,87 @@ void DebuggerKitInformation::setup(Kit *k)
// <value type="QString" key="Binary">auto</value>
// <value type="int" key="EngineType">4</value>
// </valuemap>
+ const QVariant rawId = k->value(DebuggerKitInformation::id());
- if (rawId.isNull()) {
- // Initial setup of a kit
- detection = NotDetected;
- } else if (rawId.type() == QVariant::String) {
- detection = DetectedById;
- } else {
- QMap<QString, QVariant> map = rawId.toMap();
- QString binary = map.value(QLatin1String("Binary")).toString();
- if (binary == QLatin1String("auto")) {
- detection = DetectedAutomatically;
- autoEngine = DebuggerEngineType(map.value(QLatin1String("EngineType")).toInt());
- } else {
- detection = DetectedByFile;
- fileName = FileName::fromUserInput(binary);
- }
- }
+ const ToolChain *tc = ToolChainKitInformation::toolChain(k);
+
+ // Get the best of the available debugger matching the kit's toolchain.
+ // The general idea is to find an item that exactly matches what
+ // is stored in the kit information, but also accept item based
+ // on toolchain matching as fallback with a lower priority.
const DebuggerItem *bestItem = 0;
DebuggerItem::MatchLevel bestLevel = DebuggerItem::DoesNotMatch;
+
foreach (const DebuggerItem &item, DebuggerItemManager::debuggers()) {
- const DebuggerItem *goodItem = 0;
- if (detection == DetectedById && item.id() == rawId)
- goodItem = &item;
- if (detection == DetectedByFile && item.command() == fileName)
- goodItem = &item;
- if (detection == DetectedAutomatically && item.engineType() == autoEngine)
- goodItem = &item;
- if (item.isAutoDetected())
- goodItem = &item;
-
- if (goodItem) {
- DebuggerItem::MatchLevel level = goodItem->matchTarget(toolChainAbi);
- if (level > bestLevel) {
- bestLevel = level;
- bestItem = goodItem;
+ DebuggerItem::MatchLevel level = DebuggerItem::DoesNotMatch;
+
+ if (rawId.isNull()) {
+ // Initial setup of a kit.
+ if (tc) {
+ // Use item if target toolchain fits.
+ level = item.matchTarget(tc->targetAbi());
+ } else {
+ // Use item if host toolchain fits, but only as fallback.
+ level = std::min(item.matchTarget(Abi::hostAbi()), DebuggerItem::MatchesSomewhat);
+ }
+ } else if (rawId.type() == QVariant::String) {
+ // New structure.
+ if (item.id() == rawId) {
+ // Detected by ID.
+ level = DebuggerItem::MatchesPerfectly;
+ } else {
+ // This item does not match by ID, and is an unlikely candidate.
+ // However, consider using it as fallback if the tool chain fits.
+ if (tc)
+ level = std::min(item.matchTarget(tc->targetAbi()), DebuggerItem::MatchesSomewhat);
+ }
+ } else {
+ // Old structure.
+ const QMap<QString, QVariant> map = rawId.toMap();
+ QString binary = map.value(QLatin1String("Binary")).toString();
+ if (binary == QLatin1String("auto")) {
+ // This is close to the "new kit" case, except that we know
+ // an engine type.
+ DebuggerEngineType autoEngine = DebuggerEngineType(map.value(QLatin1String("EngineType")).toInt());
+ if (item.engineType() == autoEngine) {
+ if (tc) {
+ // Use item if target toolchain fits.
+ level = item.matchTarget(tc->targetAbi());
+ } else {
+ // Use item if host toolchain fits, but only as fallback.
+ level = std::min(item.matchTarget(Abi::hostAbi()), DebuggerItem::MatchesSomewhat);
+ }
+ }
+ } else {
+ // We have an executable path.
+ FileName fileName = FileName::fromUserInput(binary);
+ if (item.command() == fileName) {
+ // And it's is the path of this item.
+ if (tc) {
+ // Use item if target toolchain fits.
+ level = item.matchTarget(tc->targetAbi());
+ } else {
+ // Use item if host toolchain fits, but only as fallback.
+ level = std::min(item.matchTarget(Abi::hostAbi()), DebuggerItem::MatchesSomewhat);
+ }
+ } else {
+ // This item does not match by filename, and is an unlikely candidate.
+ // However, consider using it as fallback if the tool chain fits.
+ if (tc)
+ level = std::min(item.matchTarget(tc->targetAbi()), DebuggerItem::MatchesSomewhat);
+ }
}
}
- }
- // If we have an existing debugger with matching id _and_
- // matching target ABI we are fine.
- if (bestItem) {
- k->setValue(DebuggerKitInformation::id(), bestItem->id());
- return;
- }
-
- // We didn't find an existing debugger that matched by whatever
- // data we found in the kit (i.e. no id, filename, "auto")
- // (or what we found did not match ABI-wise)
- // Let's try to pick one with matching ABI.
- QVariant bestId;
- bestLevel = DebuggerItem::DoesNotMatch;
- foreach (const DebuggerItem &item, DebuggerItemManager::debuggers()) {
- DebuggerItem::MatchLevel level = item.matchTarget(toolChainAbi);
if (level > bestLevel) {
bestLevel = level;
- bestId = item.id();
+ bestItem = &item;
}
}
- k->setValue(DebuggerKitInformation::id(), bestId);
+ // Use the best id we found, or an invalid one.
+ k->setValue(DebuggerKitInformation::id(), bestItem ? bestItem->id() : QVariant());
}
diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp
index bd4b2ea103..6a9884218c 100644
--- a/src/plugins/debugger/debuggerplugin.cpp
+++ b/src/plugins/debugger/debuggerplugin.cpp
@@ -3079,7 +3079,6 @@ void DebuggerPluginPrivate::extensionsInitialized()
cmd = ActionManager::registerAction(m_resetAction,
Constants::RESET, globalcontext);
cmd->setDescription(tr("Restart Debugging"));
- cmd->setDefaultKeySequence(QKeySequence(tr("Shift+Ctrl+R")));
debugMenu->addAction(cmd, CC::G_DEFAULT_ONE);
debugMenu->addSeparator(globalcontext);
diff --git a/src/plugins/debugger/debuggerrunconfigurationaspect.cpp b/src/plugins/debugger/debuggerrunconfigurationaspect.cpp
index b1271d8825..44b7ca31b8 100644
--- a/src/plugins/debugger/debuggerrunconfigurationaspect.cpp
+++ b/src/plugins/debugger/debuggerrunconfigurationaspect.cpp
@@ -184,8 +184,10 @@ void DebuggerRunConfigWidget::useCppDebuggerClicked(bool on)
m_aspect->m_useCppDebugger = on
? DebuggerRunConfigurationAspect::EnabledLanguage
: DebuggerRunConfigurationAspect::DisabledLanguage;
- if (!on && !m_useQmlDebugger->isChecked())
+ if (!on && !m_useQmlDebugger->isChecked()) {
m_useQmlDebugger->setChecked(true);
+ useQmlDebuggerClicked(true);
+ }
}
void DebuggerRunConfigWidget::useQmlDebuggerToggled(bool on)
@@ -199,8 +201,10 @@ void DebuggerRunConfigWidget::useQmlDebuggerClicked(bool on)
m_aspect->m_useQmlDebugger = on
? DebuggerRunConfigurationAspect::EnabledLanguage
: DebuggerRunConfigurationAspect::DisabledLanguage;
- if (!on && !m_useCppDebugger->isChecked())
+ if (!on && !m_useCppDebugger->isChecked()) {
m_useCppDebugger->setChecked(true);
+ useCppDebuggerClicked(true);
+ }
}
void DebuggerRunConfigWidget::useMultiProcessToggled(bool on)
diff --git a/src/plugins/debugger/gdb/remotegdbserveradapter.cpp b/src/plugins/debugger/gdb/remotegdbserveradapter.cpp
index 2c3e22eb99..5bcbba10f8 100644
--- a/src/plugins/debugger/gdb/remotegdbserveradapter.cpp
+++ b/src/plugins/debugger/gdb/remotegdbserveradapter.cpp
@@ -480,21 +480,27 @@ void GdbRemoteServerEngine::notifyEngineRemoteSetupDone(int gdbServerPort, int q
QTC_ASSERT(state() == EngineSetupRequested, qDebug() << state());
DebuggerEngine::notifyEngineRemoteSetupDone(gdbServerPort, qmlPort);
- if (m_isMulti) {
- // Has been done in notifyEngineRemoteServerRunning
- } else {
- if (qmlPort != -1)
- startParameters().qmlServerPort = qmlPort;
- if (gdbServerPort != -1) {
- QString &rc = startParameters().remoteChannel;
- const int sepIndex = rc.lastIndexOf(QLatin1Char(':'));
- if (sepIndex != -1) {
- rc.replace(sepIndex + 1, rc.count() - sepIndex - 1,
- QString::number(gdbServerPort));
- }
+ DebuggerStartParameters &params = isMasterEngine()
+ ? startParameters() : masterEngine()->startParameters();
+ if (gdbServerPort != -1) {
+ QString &rc = params.remoteChannel;
+ const int sepIndex = rc.lastIndexOf(QLatin1Char(':'));
+ if (sepIndex != -1) {
+ rc.replace(sepIndex + 1, rc.count() - sepIndex - 1,
+ QString::number(gdbServerPort));
}
- startGdb();
}
+ if (qmlPort != -1) {
+ params.qmlServerPort = qmlPort;
+ params.processArgs.replace(_("%qml_port%"), QString::number(qmlPort));
+ }
+
+ // TODO: Aren't these redundant?
+ m_isMulti = params.multiProcess;
+ m_targetPid = -1;
+ m_serverChannel = params.remoteChannel.toLatin1();
+
+ startGdb();
}
void GdbRemoteServerEngine::notifyEngineRemoteSetupFailed(const QString &reason)
diff --git a/src/plugins/ios/iosprobe.cpp b/src/plugins/ios/iosprobe.cpp
index 39433669a1..721ff52985 100644
--- a/src/plugins/ios/iosprobe.cpp
+++ b/src/plugins/ios/iosprobe.cpp
@@ -246,7 +246,7 @@ void IosProbe::setupDefaultToolchains(const QString &devPath, const QString &xco
continue;
}
if (sdkName.isEmpty()) {
- if (compareVersions(maxVersion, versionStr) > 0) {
+ if (maxVersion.isEmpty() || compareVersions(maxVersion, versionStr) > 0) {
maxVersion = versionStr;
sdkPath = sdkDirInfo.canonicalFilePath();
sdkSettings = sdkInfo;
diff --git a/src/plugins/plugins.pro b/src/plugins/plugins.pro
index 92ee74b3fa..79103a7f06 100644
--- a/src/plugins/plugins.pro
+++ b/src/plugins/plugins.pro
@@ -69,11 +69,11 @@ isEmpty(LLVM_INSTALL_DIR):LLVM_INSTALL_DIR=$$(LLVM_INSTALL_DIR)
isEmpty(IDE_PACKAGE_MODE) {
SUBDIRS += \
- helloworld \
- updateinfo
-} else:!isEmpty(UPDATEINFO_ENABLE) {
- SUBDIRS += \
- updateinfo
+ helloworld #\
+ #updateinfo
+#} else:!isEmpty(UPDATEINFO_ENABLE) {
+# SUBDIRS += \
+# updateinfo
}
for(p, SUBDIRS) {
diff --git a/src/plugins/projectexplorer/abi.cpp b/src/plugins/projectexplorer/abi.cpp
index bd9aab74b0..42f6372452 100644
--- a/src/plugins/projectexplorer/abi.cpp
+++ b/src/plugins/projectexplorer/abi.cpp
@@ -471,7 +471,7 @@ Abi Abi::abiFromTargetTriplet(const QString &triple)
width = 32;
} else if (p.startsWith(QLatin1String("mips"))) {
arch = Abi::MipsArchitecture;
- width = p.endsWith(QLatin1String("64")) ? 64 : 32;
+ width = p.contains(QLatin1String("64")) ? 64 : 32;
} else if (p == QLatin1String("x86_64") || p == QLatin1String("amd64")) {
arch = Abi::X86Architecture;
width = 64;
@@ -1065,6 +1065,10 @@ void ProjectExplorer::ProjectExplorerPlugin::testAbiFromTargetTriplet_data()
QTest::newRow("mips64-linux-octeon-gnu") << int(Abi::MipsArchitecture)
<< int(Abi::LinuxOS) << int(Abi::GenericLinuxFlavor)
<< int(Abi::ElfFormat) << 64;
+
+ QTest::newRow("mips64el-linux-gnuabi") << int(Abi::MipsArchitecture)
+ << int(Abi::LinuxOS) << int(Abi::GenericLinuxFlavor)
+ << int(Abi::ElfFormat) << 64;
}
void ProjectExplorer::ProjectExplorerPlugin::testAbiFromTargetTriplet()
diff --git a/src/plugins/projectexplorer/settingsaccessor.cpp b/src/plugins/projectexplorer/settingsaccessor.cpp
index 04d7737e5a..1f629650f4 100644
--- a/src/plugins/projectexplorer/settingsaccessor.cpp
+++ b/src/plugins/projectexplorer/settingsaccessor.cpp
@@ -678,6 +678,11 @@ QVariantMap SettingsAccessor::upgradeSettings(const QVariantMap &data, int toVer
else
result = data;
+ if (version < 15 && toVersion < 15) {
+ result.insert(QLatin1String(USER_STICKY_KEYS_KEY),
+ data.value(QLatin1String("ProjectExplorer.Project.UserStickyKeys")));
+ }
+
if (version >= toVersion
|| version < d->firstVersion()
|| toVersion > d->currentVersion())
diff --git a/src/plugins/qbsprojectmanager/qbsproject.cpp b/src/plugins/qbsprojectmanager/qbsproject.cpp
index 4a45ac5ca6..c3789249be 100644
--- a/src/plugins/qbsprojectmanager/qbsproject.cpp
+++ b/src/plugins/qbsprojectmanager/qbsproject.cpp
@@ -39,6 +39,9 @@
#include <coreplugin/documentmanager.h>
#include <coreplugin/icontext.h>
#include <coreplugin/id.h>
+#include <coreplugin/icore.h>
+#include <coreplugin/iversioncontrol.h>
+#include <coreplugin/vcsmanager.h>
#include <coreplugin/messagemanager.h>
#include <coreplugin/progressmanager/progressmanager.h>
#include <coreplugin/mimedatabase.h>
@@ -68,6 +71,7 @@
#include <QCoreApplication>
#include <QDir>
#include <QFileInfo>
+#include <QMessageBox>
#include <QVariantMap>
using namespace Core;
@@ -130,6 +134,11 @@ QbsProject::~QbsProject()
{
m_codeModelFuture.cancel();
delete m_qbsProjectParser;
+ if (m_qbsUpdateFutureInterface) {
+ m_qbsUpdateFutureInterface->reportCanceled();
+ delete m_qbsUpdateFutureInterface;
+ m_qbsUpdateFutureInterface = 0;
+ }
// Deleting the root node triggers a few things, make sure rootProjectNode
// returns 0 already
@@ -223,6 +232,27 @@ private:
bool m_wasInDocumentManager;
};
+bool QbsProject::ensureWriteableQbsFile(const QString &file)
+{
+ // Ensure that the file is not read only
+ QFileInfo fi(file);
+ if (!fi.isWritable()) {
+ // Try via vcs manager
+ Core::IVersionControl *versionControl =
+ Core::VcsManager::findVersionControlForDirectory(fi.absolutePath());
+ if (!versionControl || !versionControl->vcsOpen(file)) {
+ bool makeWritable = QFile::setPermissions(file, fi.permissions() | QFile::WriteUser);
+ if (!makeWritable) {
+ QMessageBox::warning(Core::ICore::mainWindow(),
+ tr("Failed!"),
+ tr("Could not write project file %1.").arg(file));
+ return false;
+ }
+ }
+ }
+ return true;
+}
+
bool QbsProject::addFilesToProduct(QbsBaseProjectNode *node, const QStringList &filePaths,
const qbs::ProductData &productData, const qbs::GroupData &groupData, QStringList *notAdded)
{
@@ -230,6 +260,7 @@ bool QbsProject::addFilesToProduct(QbsBaseProjectNode *node, const QStringList &
QStringList allPaths = groupData.allFilePaths();
const QString productFilePath = productData.location().fileName();
ChangeExpector expector(productFilePath, m_qbsDocuments);
+ ensureWriteableQbsFile(productFilePath);
foreach (const QString &path, filePaths) {
qbs::ErrorInfo err = m_qbsProject.addFiles(productData, groupData, QStringList() << path);
if (err.hasError()) {
@@ -255,6 +286,7 @@ bool QbsProject::removeFilesFromProduct(QbsBaseProjectNode *node, const QStringL
QStringList allPaths = groupData.allFilePaths();
const QString productFilePath = productData.location().fileName();
ChangeExpector expector(productFilePath, m_qbsDocuments);
+ ensureWriteableQbsFile(productFilePath);
foreach (const QString &path, filePaths) {
qbs::ErrorInfo err
= m_qbsProject.removeFiles(productData, groupData, QStringList() << path);
diff --git a/src/plugins/qbsprojectmanager/qbsproject.h b/src/plugins/qbsprojectmanager/qbsproject.h
index 75d9f42881..84dcda80e9 100644
--- a/src/plugins/qbsprojectmanager/qbsproject.h
+++ b/src/plugins/qbsprojectmanager/qbsproject.h
@@ -135,6 +135,8 @@ private:
void updateDeploymentInfo(const qbs::Project &project);
void updateBuildTargetData();
+ static bool ensureWriteableQbsFile(const QString &file);
+
QbsManager *const m_manager;
const QString m_projectName;
const QString m_fileName;
diff --git a/src/plugins/qbsprojectmanager/qbsrunconfiguration.cpp b/src/plugins/qbsprojectmanager/qbsrunconfiguration.cpp
index 5c5a52a066..4fb227f92d 100644
--- a/src/plugins/qbsprojectmanager/qbsrunconfiguration.cpp
+++ b/src/plugins/qbsprojectmanager/qbsrunconfiguration.cpp
@@ -194,6 +194,8 @@ void QbsRunConfiguration::installStepChanged()
if (m_currentBuildStepList) {
connect(m_currentBuildStepList, SIGNAL(stepInserted(int)), this, SLOT(installStepChanged()));
+ connect(m_currentBuildStepList, SIGNAL(aboutToRemoveStep(int)), this,
+ SLOT(installStepToBeRemoved(int)));
connect(m_currentBuildStepList, SIGNAL(stepRemoved(int)), this, SLOT(installStepChanged()));
connect(m_currentBuildStepList, SIGNAL(stepMoved(int,int)), this, SLOT(installStepChanged()));
}
@@ -201,6 +203,17 @@ void QbsRunConfiguration::installStepChanged()
emit targetInformationChanged();
}
+void QbsRunConfiguration::installStepToBeRemoved(int pos)
+{
+ QTC_ASSERT(m_currentBuildStepList, return);
+ // TODO: Our logic is rather broken. Users can create as many qbs install steps as they want,
+ // but we ignore all but the first one.
+ if (m_currentBuildStepList->steps().at(pos) != m_currentInstallStep)
+ return;
+ disconnect(m_currentInstallStep, SIGNAL(changed()), this, SIGNAL(targetInformationChanged()));
+ m_currentInstallStep = 0;
+}
+
QString QbsRunConfiguration::executable() const
{
QbsProject *pro = static_cast<QbsProject *>(target()->project());
diff --git a/src/plugins/qbsprojectmanager/qbsrunconfiguration.h b/src/plugins/qbsprojectmanager/qbsrunconfiguration.h
index 590319d992..48af566bcf 100644
--- a/src/plugins/qbsprojectmanager/qbsrunconfiguration.h
+++ b/src/plugins/qbsprojectmanager/qbsrunconfiguration.h
@@ -105,6 +105,7 @@ protected:
private slots:
void installStepChanged();
+ void installStepToBeRemoved(int pos);
private:
void setBaseWorkingDirectory(const QString &workingDirectory);
diff --git a/src/plugins/qmakeprojectmanager/qmakenodes.cpp b/src/plugins/qmakeprojectmanager/qmakenodes.cpp
index e7bbf29f68..f8c5f0a973 100644
--- a/src/plugins/qmakeprojectmanager/qmakenodes.cpp
+++ b/src/plugins/qmakeprojectmanager/qmakenodes.cpp
@@ -1712,17 +1712,13 @@ void QmakeProFileNode::setupReader()
QmakeProFileNode::EvalResult QmakeProFileNode::evaluate()
{
- EvalResult evalResult = EvalOk;
if (ProFile *pro = m_readerExact->parsedProFile(m_projectFilePath)) {
- if (!m_readerExact->accept(pro, QMakeEvaluator::LoadAll))
- evalResult = EvalPartial;
- if (!m_readerCumulative->accept(pro, QMakeEvaluator::LoadPreFiles))
- evalResult = EvalFail;
+ bool exactOk = m_readerExact->accept(pro, QMakeEvaluator::LoadAll);
+ bool cumulOk = m_readerCumulative->accept(pro, QMakeEvaluator::LoadPreFiles);
pro->deref();
- } else {
- evalResult = EvalFail;
+ return exactOk ? EvalOk : cumulOk ? EvalPartial : EvalFail;
}
- return evalResult;
+ return EvalFail;
}
void QmakeProFileNode::asyncEvaluate(QFutureInterface<EvalResult> &fi)
diff --git a/src/plugins/qmldesigner/components/integration/designdocument.cpp b/src/plugins/qmldesigner/components/integration/designdocument.cpp
index 23cf2e791e..6f6889ee4d 100644
--- a/src/plugins/qmldesigner/components/integration/designdocument.cpp
+++ b/src/plugins/qmldesigner/components/integration/designdocument.cpp
@@ -650,10 +650,9 @@ static inline ProjectExplorer::Kit *getActiveKit(DesignDocument *designDocument)
if (!isFileInProject(designDocument, currentProject))
return 0;
- designDocument->disconnect(designDocument, SLOT(updateActiveQtVersion()));
- designDocument->connect(projectExplorer, SIGNAL(currentProjectChanged(ProjectExplorer::Project*)), designDocument, SLOT(updateActiveQtVersion()));
+ designDocument->connect(projectExplorer, SIGNAL(currentProjectChanged(ProjectExplorer::Project*)), designDocument, SLOT(updateActiveQtVersion()), Qt::UniqueConnection);
- designDocument->connect(currentProject, SIGNAL(activeTargetChanged(ProjectExplorer::Target*)), designDocument, SLOT(updateActiveQtVersion()));
+ designDocument->connect(currentProject, SIGNAL(activeTargetChanged(ProjectExplorer::Target*)), designDocument, SLOT(updateActiveQtVersion()), Qt::UniqueConnection);
ProjectExplorer::Target *target = currentProject->activeTarget();
@@ -661,7 +660,7 @@ static inline ProjectExplorer::Kit *getActiveKit(DesignDocument *designDocument)
if (!target)
return 0;
- designDocument->connect(target, SIGNAL(kitChanged()), designDocument, SLOT(updateActiveQtVersion()));
+ designDocument->connect(target, SIGNAL(kitChanged()), designDocument, SLOT(updateActiveQtVersion()), Qt::UniqueConnection);
return target->kit();
}
diff --git a/src/plugins/qmldesigner/components/navigator/navigatortreemodel.cpp b/src/plugins/qmldesigner/components/navigator/navigatortreemodel.cpp
index 6b982e9da1..9cb96d4d5f 100644
--- a/src/plugins/qmldesigner/components/navigator/navigatortreemodel.cpp
+++ b/src/plugins/qmldesigner/components/navigator/navigatortreemodel.cpp
@@ -721,7 +721,7 @@ void NavigatorTreeModel::handleItemLibraryItemDrop(const QMimeData *mimeData, in
if (foundTarget) {
ItemLibraryEntry itemLibraryEntry = itemLibraryEntryFromData(mimeData->data("application/vnd.bauhaus.itemlibraryinfo"));
- QmlItemNode newQmlItemNode = QmlItemNode::createQmlItemNode(m_view, itemLibraryEntry, QPointF(0., 0.), targetProperty);
+ QmlItemNode newQmlItemNode = QmlItemNode::createQmlItemNode(m_view, itemLibraryEntry, QPointF(), targetProperty);
if (newQmlItemNode.isValid() && targetProperty.isNodeListProperty()) {
QList<ModelNode> newModelNodeList;
@@ -742,7 +742,7 @@ void NavigatorTreeModel::handleItemLibraryImageDrop(const QMimeData *mimeData, i
if (foundTarget) {
QString imageFileName = QString::fromUtf8(mimeData->data("application/vnd.bauhaus.libraryresource"));
- QmlItemNode newQmlItemNode = QmlItemNode::createQmlItemNodeFromImage(m_view, imageFileName, QPointF(0., 0.), targetProperty);
+ QmlItemNode newQmlItemNode = QmlItemNode::createQmlItemNodeFromImage(m_view, imageFileName, QPointF(), targetProperty);
if (newQmlItemNode.isValid()) {
QList<ModelNode> newModelNodeList;
diff --git a/src/plugins/qmldesigner/componentsplugin/Controls/TabViewSpecifics.qml b/src/plugins/qmldesigner/componentsplugin/Controls/TabViewSpecifics.qml
index 85f1c21066..5ce74617ca 100644
--- a/src/plugins/qmldesigner/componentsplugin/Controls/TabViewSpecifics.qml
+++ b/src/plugins/qmldesigner/componentsplugin/Controls/TabViewSpecifics.qml
@@ -39,7 +39,7 @@ Column {
Section {
anchors.left: parent.left
anchors.right: parent.right
- caption: qsTr("TabView")
+ caption: qsTr("Tab View")
SectionLayout {
diff --git a/src/plugins/qmldesigner/componentsplugin/Controls/TextAreaSpecifics.qml b/src/plugins/qmldesigner/componentsplugin/Controls/TextAreaSpecifics.qml
index 7835bd2842..70347cf6db 100644
--- a/src/plugins/qmldesigner/componentsplugin/Controls/TextAreaSpecifics.qml
+++ b/src/plugins/qmldesigner/componentsplugin/Controls/TextAreaSpecifics.qml
@@ -44,7 +44,7 @@ Column {
ColorEditor {
caption: qsTr("Color")
- backendendValue: backendValues.textColor
+ backendValue: backendValues.textColor
supportGradient: false
}
}
diff --git a/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp b/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp
index c92cc6d980..8570ddc8a1 100644
--- a/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp
+++ b/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp
@@ -786,8 +786,10 @@ void NodeMetaInfoPrivate::setupLocalPropertyInfo(QList<PropertyInfo> localProper
void NodeMetaInfoPrivate::setupPropertyInfo(QList<PropertyInfo> propertyInfos)
{
foreach (const PropertyInfo &propertyInfo, propertyInfos) {
- m_properties.append(propertyInfo.first);
- m_propertyTypes.append(propertyInfo.second);
+ if (!m_properties.contains(propertyInfo.first)) {
+ m_properties.append(propertyInfo.first);
+ m_propertyTypes.append(propertyInfo.second);
+ }
}
}
diff --git a/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp b/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp
index 4242214f1f..770f86b2a6 100644
--- a/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp
+++ b/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp
@@ -117,8 +117,10 @@ QmlItemNode QmlItemNode::createQmlItemNode(AbstractView *view, const ItemLibrary
QList<PropertyBindingEntry> propertyBindingList;
if (itemLibraryEntry.qmlSource().isEmpty()) {
QList<QPair<PropertyName, QVariant> > propertyPairList;
- propertyPairList.append(qMakePair(PropertyName("x"), QVariant(qRound(position.x()))));
- propertyPairList.append(qMakePair(PropertyName("y"), QVariant(qRound(position.y()))));
+ if (!position.isNull()) {
+ propertyPairList.append(qMakePair(PropertyName("x"), QVariant(qRound(position.x()))));
+ propertyPairList.append(qMakePair(PropertyName("y"), QVariant(qRound(position.y()))));
+ }
foreach (const PropertyContainer &property, itemLibraryEntry.properties()) {
if (property.type() == QStringLiteral("binding")) {
diff --git a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp
index 7927a4f259..9e0fe108b7 100644
--- a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp
+++ b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp
@@ -74,7 +74,8 @@ static inline QStringList supportedVersionsList()
static inline QStringList globalQtEnums()
{
static QStringList list = QStringList() << QStringLiteral("Horizontal") << QStringLiteral("Vertical") << QStringLiteral("AlignVCenter")
- << QStringLiteral("AlignLeft") << QStringLiteral("LeftToRight") << QStringLiteral("RightToLeft")
+ << QStringLiteral("AlignLeft") << QStringLiteral("LeftToRight") << QStringLiteral("RightToLeft") << QStringLiteral("AlignHCenter")
+ << QStringLiteral("AlignRight") << QStringLiteral("AlignBottom") << QStringLiteral("AlignBaseline") << QStringLiteral("AlignTop")
<< QStringLiteral("BottomLeft") << QStringLiteral("LeftEdge") << QStringLiteral("RightEdge") << QStringLiteral("BottomEdge");
return list;
@@ -867,7 +868,6 @@ bool TextToModelMerger::load(const QString &data, DifferenceHandler &differenceH
setupImports(doc, differenceHandler);
setupPossibleImports(snapshot, vContext);
- setupUsedImports();
if (m_rewriterView->model()->imports().isEmpty()) {
const QmlJS::DiagnosticMessage diagnosticMessage(QmlJS::Severity::Error, AST::SourceLocation(0, 0, 0, 0), QCoreApplication::translate("QmlDesigner::TextToModelMerger", "No import statements found"));
@@ -943,6 +943,7 @@ bool TextToModelMerger::load(const QString &data, DifferenceHandler &differenceH
}
}
}
+ setupUsedImports();
UiObjectMember *astRootNode = 0;
if (UiProgram *program = doc->qmlProgram())
diff --git a/src/plugins/qmljstools/qmljsmodelmanager.cpp b/src/plugins/qmljstools/qmljsmodelmanager.cpp
index fc3f0f744b..c32c78668d 100644
--- a/src/plugins/qmljstools/qmljsmodelmanager.cpp
+++ b/src/plugins/qmljstools/qmljsmodelmanager.cpp
@@ -112,14 +112,14 @@ ModelManagerInterface::ProjectInfo QmlJSTools::Internal::ModelManager::defaultPr
projectInfo.tryQmlDump = project && (
qtVersion->type() == QLatin1String(QtSupport::Constants::DESKTOPQT)
|| qtVersion->type() == QLatin1String(QtSupport::Constants::SIMULATORQT));
- projectInfo.qtQmlPath = qtVersion->qmakeProperty("QT_INSTALL_QML");
- projectInfo.qtImportsPath = qtVersion->qmakeProperty("QT_INSTALL_IMPORTS");
+ projectInfo.qtQmlPath = QFileInfo(qtVersion->qmakeProperty("QT_INSTALL_QML")).canonicalFilePath();
+ projectInfo.qtImportsPath = QFileInfo(qtVersion->qmakeProperty("QT_INSTALL_IMPORTS")).canonicalFilePath();
projectInfo.qtVersionString = qtVersion->qtVersionString();
} else {
#if (QT_VERSION >= QT_VERSION_CHECK(5, 0, 0))
- projectInfo.qtQmlPath = QLibraryInfo::location(QLibraryInfo::Qml2ImportsPath);
+ projectInfo.qtQmlPath = QFileInfo(QLibraryInfo::location(QLibraryInfo::Qml2ImportsPath)).canonicalFilePath();
#endif
- projectInfo.qtImportsPath = QLibraryInfo::location(QLibraryInfo::ImportsPath);
+ projectInfo.qtImportsPath = QFileInfo(QLibraryInfo::location(QLibraryInfo::ImportsPath)).canonicalFilePath();
projectInfo.qtVersionString = QLatin1String(qVersion());
}
diff --git a/src/plugins/qtsupport/baseqtversion.cpp b/src/plugins/qtsupport/baseqtversion.cpp
index 73ed319e42..c570d9c2b1 100644
--- a/src/plugins/qtsupport/baseqtversion.cpp
+++ b/src/plugins/qtsupport/baseqtversion.cpp
@@ -264,6 +264,12 @@ FeatureSet BaseQtVersion::availableFeatures() const
features |= FeatureSet(Constants::FEATURE_QT_QUICK_2_2);
features |= FeatureSet(Constants::FEATURE_QT_QUICK_CONTROLS_1_1);
+ if (qtVersion() < QtVersionNumber(5, 3, 0))
+ return features;
+
+ features |= FeatureSet(Constants::FEATURE_QT_QUICK_2_3);
+ features |= FeatureSet(Constants::FEATURE_QT_QUICK_CONTROLS_1_2);
+
return features;
}
diff --git a/src/plugins/qtsupport/qtsupportconstants.h b/src/plugins/qtsupport/qtsupportconstants.h
index 6e43613742..e7f1e565a8 100644
--- a/src/plugins/qtsupport/qtsupportconstants.h
+++ b/src/plugins/qtsupport/qtsupportconstants.h
@@ -60,10 +60,12 @@ const char FEATURE_QT_QUICK_2[] = "QtSupport.Wizards.FeatureQtQuick.2";
const char FEATURE_QT_QUICK_2_0[] = "QtSupport.Wizards.FeatureQtQuick.2.0";
const char FEATURE_QT_QUICK_2_1[] = "QtSupport.Wizards.FeatureQtQuick.2.1";
const char FEATURE_QT_QUICK_2_2[] = "QtSupport.Wizards.FeatureQtQuick.2.2";
+const char FEATURE_QT_QUICK_2_3[] = "QtSupport.Wizards.FeatureQtQuick.2.3";
const char FEATURE_QT_QUICK_CONTROLS[] = "QtSupport.Wizards.FeatureQtQuick.Controls";
const char FEATURE_QT_QUICK_CONTROLS_1[] = "QtSupport.Wizards.FeatureQtQuick.Controls.1";
const char FEATURE_QT_QUICK_CONTROLS_1_0[] = "QtSupport.Wizards.FeatureQtQuick.Controls.1.0";
const char FEATURE_QT_QUICK_CONTROLS_1_1[] = "QtSupport.Wizards.FeatureQtQuick.Controls.1.1";
+const char FEATURE_QT_QUICK_CONTROLS_1_2[] = "QtSupport.Wizards.FeatureQtQuick.Controls.1.2";
const char FEATURE_QT_WEBKIT[] = "QtSupport.Wizards.FeatureQtWebkit";
const char FEATURE_QT_CONSOLE[] = "QtSupport.Wizards.FeatureQtConsole";
const char FEATURE_MOBILE[] = "QtSupport.Wizards.FeatureMobile";
diff --git a/src/plugins/remotelinux/remotelinuxdebugsupport.cpp b/src/plugins/remotelinux/remotelinuxdebugsupport.cpp
index 5f903c011b..e6ecb1de65 100644
--- a/src/plugins/remotelinux/remotelinuxdebugsupport.cpp
+++ b/src/plugins/remotelinux/remotelinuxdebugsupport.cpp
@@ -42,6 +42,7 @@
#include <projectexplorer/devicesupport/deviceapplicationrunner.h>
#include <utils/qtcassert.h>
+#include <utils/qtcprocess.h>
#include <QPointer>
@@ -60,7 +61,6 @@ public:
: engine(engine),
qmlDebugging(runConfig->extraAspect<Debugger::DebuggerRunConfigurationAspect>()->useQmlDebugger()),
cppDebugging(runConfig->extraAspect<Debugger::DebuggerRunConfigurationAspect>()->useCppDebugger()),
- target(DeviceKitInformation::device(runConfig->target()->kit())->sshParameters().host.toLatin1()),
gdbServerPort(-1), qmlPort(-1)
{
}
@@ -69,7 +69,6 @@ public:
bool qmlDebugging;
bool cppDebugging;
QByteArray gdbserverOutput;
- QByteArray target;
int gdbServerPort;
int qmlPort;
};
@@ -99,8 +98,12 @@ DebuggerStartParameters LinuxDeviceDebugSupport::startParameters(const AbstractR
params.qmlServerPort = 0; // port is selected later on
}
if (aspect->useCppDebugger()) {
+ params.multiProcess = true;
params.languages |= CppLanguage;
- params.processArgs = runConfig->arguments().join(QLatin1Char(' '));
+ QStringList args = runConfig->arguments();
+ if (aspect->useQmlDebugger())
+ args.prepend(QString::fromLatin1("-qmljsdebugger=port:%qml_port%,block"));
+ params.processArgs = Utils::QtcProcess::joinArgs(args, Utils::OsTypeLinux);
params.startMode = AttachToRemoteServer;
params.executable = runConfig->localExecutableFilePath();
params.remoteChannel = device->sshParameters().host + QLatin1String(":-1");
@@ -265,8 +268,6 @@ void LinuxDeviceDebugSupport::handleAdapterSetupFailed(const QString &error)
void LinuxDeviceDebugSupport::handleAdapterSetupDone()
{
AbstractRemoteLinuxRunSupport::handleAdapterSetupDone();
- QByteArray remote = d->target + ':' + QByteArray::number(d->gdbServerPort);
- d->engine->notifyEngineRemoteServerRunning(remote, -1);
d->engine->notifyEngineRemoteSetupDone(d->gdbServerPort, d->qmlPort);
}
diff --git a/src/plugins/winrt/winrtdebugsupport.cpp b/src/plugins/winrt/winrtdebugsupport.cpp
index bb6bd4a373..ae6d322814 100644
--- a/src/plugins/winrt/winrtdebugsupport.cpp
+++ b/src/plugins/winrt/winrtdebugsupport.cpp
@@ -84,7 +84,7 @@ RunControl *WinRtDebugSupport::createDebugRunControl(WinRtRunConfiguration *runC
+ QLatin1String("/winrtdebughelper.exe"));
if (!debuggerHelper.isExecutable()) {
*errorMessage = tr("The WinRT debugging helper is missing from your Qt Creator "
- "installation. It was assumed to be located at").arg(
+ "installation. It was assumed to be located at %1").arg(
debuggerHelper.absoluteFilePath());
return 0;
}