summaryrefslogtreecommitdiff
path: root/src/plugins
diff options
context:
space:
mode:
authorEike Ziller <eike.ziller@qt.io>2021-05-31 16:13:47 +0200
committerEike Ziller <eike.ziller@qt.io>2021-05-31 16:13:47 +0200
commit2485c31a4875013172bcc98a2c1829435e22d706 (patch)
tree1fbd5846d463bd950952489a91b87fcd6c37d6e8 /src/plugins
parent90e9de5d5d50e7d2e04c4597d30c0a2fcf5dd6c4 (diff)
parentfbeaa774b5528764669f8cf2068b65149fc4adcd (diff)
downloadqt-creator-2485c31a4875013172bcc98a2c1829435e22d706.tar.gz
Merge remote-tracking branch 'origin/4.15'
Conflicts: doc/qtcreator/src/qtquick/qtquick-from-qmlproject-to-pro.qdoc Change-Id: I906330addb7de31e6ed88f88af3fd2adbbe53e1f
Diffstat (limited to 'src/plugins')
-rw-r--r--src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp13
-rw-r--r--src/plugins/cmakeprojectmanager/fileapireader.cpp54
-rw-r--r--src/plugins/cmakeprojectmanager/fileapireader.h4
-rw-r--r--src/plugins/mcusupport/mcusupportsdk.cpp8
-rw-r--r--src/plugins/qmldesigner/components/formeditor/formeditorwidget.cpp3
-rw-r--r--src/plugins/qmldesigner/components/propertyeditor/itemfiltermodel.cpp2
-rw-r--r--src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp6
7 files changed, 57 insertions, 33 deletions
diff --git a/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp b/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp
index e4ae7e2dc9..8fb3a7b45f 100644
--- a/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp
+++ b/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp
@@ -259,11 +259,11 @@ void CMakeBuildSystem::triggerParsing()
if (m_waitingForScan) {
qCDebug(cmakeBuildSystemLog) << "Starting TreeScanner";
QTC_CHECK(m_treeScanner.isFinished());
- m_treeScanner.asyncScanForFiles(projectDirectory());
- Core::ProgressManager::addTask(m_treeScanner.future(),
- tr("Scan \"%1\" project tree")
- .arg(project()->displayName()),
- "CMake.Scan.Tree");
+ if (m_treeScanner.asyncScanForFiles(projectDirectory()))
+ Core::ProgressManager::addTask(m_treeScanner.future(),
+ tr("Scan \"%1\" project tree")
+ .arg(project()->displayName()),
+ "CMake.Scan.Tree");
}
QTC_ASSERT(m_parameters.isValid(), return );
@@ -920,7 +920,8 @@ FilePath CMakeBuildSystem::workDirectory(const BuildDirParameters &parameters)
void CMakeBuildSystem::stopParsingAndClearState()
{
- qCDebug(cmakeBuildSystemLog) << "stopping parsing run!";
+ qCDebug(cmakeBuildSystemLog) << cmakeBuildConfiguration()->displayName()
+ << "stopping parsing run!";
m_reader.stop();
m_reader.resetData();
}
diff --git a/src/plugins/cmakeprojectmanager/fileapireader.cpp b/src/plugins/cmakeprojectmanager/fileapireader.cpp
index ae3725e4a8..2b3a086b1e 100644
--- a/src/plugins/cmakeprojectmanager/fileapireader.cpp
+++ b/src/plugins/cmakeprojectmanager/fileapireader.cpp
@@ -165,6 +165,13 @@ void FileApiReader::stop()
if (m_cmakeProcess)
disconnect(m_cmakeProcess.get(), nullptr, this, nullptr);
m_cmakeProcess.reset();
+
+ if (m_future) {
+ m_future->cancel();
+ m_future->waitForFinished();
+ }
+ m_future = {};
+ m_isParsing = false;
}
bool FileApiReader::isParsing() const
@@ -259,7 +266,7 @@ void FileApiReader::endState(const QFileInfo &replyFi)
m_future = runAsync(ProjectExplorerPlugin::sharedThreadPool(),
[replyFi, sourceDirectory, buildDirectory, topCmakeFile, cmakeBuildType]() {
- auto result = std::make_unique<FileApiQtcData>();
+ auto result = std::make_shared<FileApiQtcData>();
FileApiData data = FileApiParser::parseData(replyFi, cmakeBuildType, result->errorMessage);
if (!result->errorMessage.isEmpty()) {
qWarning() << result->errorMessage;
@@ -274,29 +281,30 @@ void FileApiReader::endState(const QFileInfo &replyFi)
qWarning() << result->errorMessage;
}
- return result.release();
+ return result;
});
- onFinished(m_future.value(), this, [this](const QFuture<FileApiQtcData *> &f) {
- std::unique_ptr<FileApiQtcData> value(f.result()); // Adopt the pointer again:-)
-
- m_future = {};
- m_isParsing = false;
- m_cache = std::move(value->cache);
- m_cmakeFiles = std::move(value->cmakeFiles);
- m_buildTargets = std::move(value->buildTargets);
- m_projectParts = std::move(value->projectParts);
- m_rootProjectNode = std::move(value->rootProjectNode);
- m_knownHeaders = std::move(value->knownHeaders);
- m_ctestPath = std::move(value->ctestPath);
- m_isMultiConfig = std::move(value->isMultiConfig);
- m_usesAllCapsTargets = std::move(value->usesAllCapsTargets);
-
- if (value->errorMessage.isEmpty()) {
- emit this->dataAvailable();
- } else {
- emit this->errorOccurred(value->errorMessage);
- }
- });
+ onResultReady(m_future.value(),
+ this,
+ [this, topCmakeFile, sourceDirectory, buildDirectory](
+ const std::shared_ptr<FileApiQtcData> &value) {
+ m_isParsing = false;
+ m_cache = std::move(value->cache);
+ m_cmakeFiles = std::move(value->cmakeFiles);
+ m_buildTargets = std::move(value->buildTargets);
+ m_projectParts = std::move(value->projectParts);
+ m_rootProjectNode = std::move(value->rootProjectNode);
+ m_knownHeaders = std::move(value->knownHeaders);
+ m_ctestPath = std::move(value->ctestPath);
+ m_isMultiConfig = std::move(value->isMultiConfig);
+ m_usesAllCapsTargets = std::move(value->usesAllCapsTargets);
+
+ if (value->errorMessage.isEmpty()) {
+ emit this->dataAvailable();
+ } else {
+ emit this->errorOccurred(value->errorMessage);
+ }
+ m_future = {};
+ });
}
void FileApiReader::makeBackupConfiguration(bool store)
diff --git a/src/plugins/cmakeprojectmanager/fileapireader.h b/src/plugins/cmakeprojectmanager/fileapireader.h
index 25d5e1af1b..505f5fd506 100644
--- a/src/plugins/cmakeprojectmanager/fileapireader.h
+++ b/src/plugins/cmakeprojectmanager/fileapireader.h
@@ -38,6 +38,8 @@
#include <QObject>
#include <QDateTime>
+#include <memory>
+
namespace ProjectExplorer {
class ProjectNode;
}
@@ -105,7 +107,7 @@ private:
bool m_usesAllCapsTargets = false;
int m_lastCMakeExitCode = 0;
- Utils::optional<QFuture<FileApiQtcData *>> m_future;
+ Utils::optional<QFuture<std::shared_ptr<FileApiQtcData>>> m_future;
// Update related:
bool m_isParsing = false;
diff --git a/src/plugins/mcusupport/mcusupportsdk.cpp b/src/plugins/mcusupport/mcusupportsdk.cpp
index 52681a5beb..8cd34c0abf 100644
--- a/src/plugins/mcusupport/mcusupportsdk.cpp
+++ b/src/plugins/mcusupport/mcusupportsdk.cpp
@@ -241,11 +241,15 @@ static McuPackage *createRGLPackage()
static McuPackage *createStm32CubeProgrammerPackage()
{
QString defaultPath = QDir::homePath();
+ const QString cubePath = "/STMicroelectronics/STM32Cube/STM32CubeProgrammer/";
if (Utils::HostOsInfo::isWindowsHost()) {
- const QString programPath =
- findInProgramFiles("/STMicroelectronics/STM32Cube/STM32CubeProgrammer/");
+ const QString programPath = findInProgramFiles(cubePath);
if (!programPath.isEmpty())
defaultPath = programPath;
+ } else {
+ const QString programPath = QDir::homePath() + cubePath;
+ if (QFileInfo::exists(programPath))
+ defaultPath = programPath;
}
auto result = new McuPackage(
McuPackage::tr("STM32CubeProgrammer"),
diff --git a/src/plugins/qmldesigner/components/formeditor/formeditorwidget.cpp b/src/plugins/qmldesigner/components/formeditor/formeditorwidget.cpp
index 5863e6230f..8797f90dc2 100644
--- a/src/plugins/qmldesigner/components/formeditor/formeditorwidget.cpp
+++ b/src/plugins/qmldesigner/components/formeditor/formeditorwidget.cpp
@@ -576,6 +576,9 @@ void FormEditorWidget::showEvent(QShowEvent *event)
m_formEditorView->cleanupToolsAndScene();
m_formEditorView->setupFormEditorWidget();
m_formEditorView->resetToSelectionTool();
+ QmlItemNode rootNode = m_formEditorView->rootModelNode();
+ if (rootNode.isValid())
+ setRootItemRect(rootNode.instanceBoundingRect());
}
}
diff --git a/src/plugins/qmldesigner/components/propertyeditor/itemfiltermodel.cpp b/src/plugins/qmldesigner/components/propertyeditor/itemfiltermodel.cpp
index fab8cde66e..8e65559fce 100644
--- a/src/plugins/qmldesigner/components/propertyeditor/itemfiltermodel.cpp
+++ b/src/plugins/qmldesigner/components/propertyeditor/itemfiltermodel.cpp
@@ -92,7 +92,7 @@ QVariant ItemFilterModel::modelNodeBackend() const
void ItemFilterModel::setupModel()
{
- if (!m_modelNode.isValid())
+ if (!m_modelNode.isValid() || !m_modelNode.view()->isAttached())
return;
m_lock = true;
diff --git a/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp b/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp
index 1d8aac500c..7eacf17197 100644
--- a/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp
+++ b/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp
@@ -1476,6 +1476,12 @@ QVariant NodeMetaInfo::propertyCastedValue(const PropertyName &propertyName, con
} else if (typeName == "alias") {
// TODO: The QML compiler resolves the alias type. We probably should do the same.
return variant;
+ } else if (typeName == "<cpp>.double") {
+ return variant.toDouble();
+ } else if (typeName == "<cpp>.float") {
+ return variant.toFloat();
+ } else if (typeName == "<cpp>.int") {
+ return variant.toInt();
} else if (copyVariant.convert(typeId)) {
return copyVariant;
}