diff options
author | Eike Ziller <eike.ziller@qt.io> | 2021-05-31 16:13:47 +0200 |
---|---|---|
committer | Eike Ziller <eike.ziller@qt.io> | 2021-05-31 16:13:47 +0200 |
commit | 2485c31a4875013172bcc98a2c1829435e22d706 (patch) | |
tree | 1fbd5846d463bd950952489a91b87fcd6c37d6e8 /src | |
parent | 90e9de5d5d50e7d2e04c4597d30c0a2fcf5dd6c4 (diff) | |
parent | fbeaa774b5528764669f8cf2068b65149fc4adcd (diff) | |
download | qt-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')
10 files changed, 63 insertions, 35 deletions
diff --git a/src/libs/3rdparty/sqlite/config.h b/src/libs/3rdparty/sqlite/config.h index 19757d3f8e..d386f34a5a 100644 --- a/src/libs/3rdparty/sqlite/config.h +++ b/src/libs/3rdparty/sqlite/config.h @@ -82,3 +82,4 @@ #define SQLITE_ENABLE_PREUPDATE_HOOK 1 #define SQLITE_LIKE_DOESNT_MATCH_BLOBS 1 #define SQLITE_OMIT_AUTOINIT 1 +#define SQLITE_DEFAULT_CACHE_SIZE -100000 diff --git a/src/libs/languageserverprotocol/completion.cpp b/src/libs/languageserverprotocol/completion.cpp index 70c813a4ea..f4e1295d75 100644 --- a/src/libs/languageserverprotocol/completion.cpp +++ b/src/libs/languageserverprotocol/completion.cpp @@ -45,8 +45,9 @@ Utils::optional<MarkupOrString> CompletionItem::documentation() const Utils::optional<CompletionItem::InsertTextFormat> CompletionItem::insertTextFormat() const { Utils::optional<int> value = optionalValue<int>(insertTextFormatKey); - return value.has_value() ? Utils::nullopt - : Utils::make_optional(CompletionItem::InsertTextFormat(value.value())); + return value.has_value() + ? Utils::make_optional(CompletionItem::InsertTextFormat(value.value())) + : Utils::nullopt; } 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 ¶meters) 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; } diff --git a/src/share/3rdparty/package-manager/auto-setup.cmake b/src/share/3rdparty/package-manager/auto-setup.cmake index 56da6eb3dd..e342c32e5f 100644 --- a/src/share/3rdparty/package-manager/auto-setup.cmake +++ b/src/share/3rdparty/package-manager/auto-setup.cmake @@ -79,6 +79,8 @@ if (conanfile_txt AND NOT QT_CREATOR_SKIP_CONAN_SETUP) execute_process(COMMAND ${CMAKE_COMMAND} -S "${CMAKE_BINARY_DIR}/conan-dependencies/" -B "${CMAKE_BINARY_DIR}/conan-dependencies/build" + -C "${CMAKE_BINARY_DIR}/qtcsettings.cmake" + -D "CMAKE_TOOLCHAIN_FILE=${CMAKE_BINARY_DIR}/conan-dependencies/toolchain.cmake" -G ${CMAKE_GENERATOR} -D CMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} RESULT_VARIABLE result |