From c9638bf5ea1787999a6574c98858fb737f8fdf64 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Mon, 14 Dec 2020 17:43:03 +0100 Subject: [PATCH 01/16] QmlDesigner: Also react to ModelManagerInterface::projectInfoUpdated If a new file is added to the project we have to react to projectInfoUpdated. Since the signal cannot be queued we use an indirection. Task-number: QDS-3113 Change-Id: I13e6a9623e3c51384435ee9dfd10576a77df3e35 Reviewed-by: Tim Jenssen --- .../qmldesigner/designercore/include/rewriterview.h | 4 ++++ .../qmldesigner/designercore/model/rewriterview.cpp | 9 +++++++++ 2 files changed, 13 insertions(+) diff --git a/src/plugins/qmldesigner/designercore/include/rewriterview.h b/src/plugins/qmldesigner/designercore/include/rewriterview.h index f71b1a42510..c867b9a67d8 100644 --- a/src/plugins/qmldesigner/designercore/include/rewriterview.h +++ b/src/plugins/qmldesigner/designercore/include/rewriterview.h @@ -174,6 +174,9 @@ public: ModelNode getNodeForCanonicalIndex(int index); +signals: + void modelInterfaceProjectUpdated(); + protected: // functions void importAdded(const Import &import); void importRemoved(const Import &import); @@ -191,6 +194,7 @@ private: //variables ModelNode nodeAtTextCursorPositionHelper(const ModelNode &root, int cursorPosition) const; void setupCanonicalHashes() const; void handleLibraryInfoUpdate(); + void handleProjectUpdate(); TextModifier *m_textModifier = nullptr; int transactionLevel = 0; diff --git a/src/plugins/qmldesigner/designercore/model/rewriterview.cpp b/src/plugins/qmldesigner/designercore/model/rewriterview.cpp index 44726c23e00..85e41d3b7e5 100644 --- a/src/plugins/qmldesigner/designercore/model/rewriterview.cpp +++ b/src/plugins/qmldesigner/designercore/model/rewriterview.cpp @@ -91,6 +91,10 @@ RewriterView::RewriterView(DifferenceHandling differenceHandling, QObject *paren QmlJS::ModelManagerInterface *modelManager = QmlJS::ModelManagerInterface::instance(); connect(modelManager, &QmlJS::ModelManagerInterface::libraryInfoUpdated, this, &RewriterView::handleLibraryInfoUpdate, Qt::QueuedConnection); + connect(modelManager, &QmlJS::ModelManagerInterface::projectInfoUpdated, + this, &RewriterView::handleProjectUpdate, Qt::DirectConnection); + connect(this, &RewriterView::modelInterfaceProjectUpdated, + this, &RewriterView::handleLibraryInfoUpdate, Qt::QueuedConnection); } RewriterView::~RewriterView() = default; @@ -832,6 +836,11 @@ void RewriterView::handleLibraryInfoUpdate() m_amendTimer.start(); } +void RewriterView::handleProjectUpdate() +{ + emit modelInterfaceProjectUpdated(); +} + ModelNode RewriterView::nodeAtTextCursorPosition(int cursorPosition) const { return nodeAtTextCursorPositionHelper(rootModelNode(), cursorPosition); From aa4b9b88dae3b63c6cc2dc81d34e632582ad8caa Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Mon, 14 Dec 2020 19:30:36 +0100 Subject: [PATCH 02/16] QmlPreview: Restart if a shader is modified If a shader is modified we have to restart the preview. Task-number: QDS-3179 Change-Id: I7d1fbde4a0db0ecd9ac1f2c7eb60d2e919935c73 Reviewed-by: Tim Jenssen --- src/plugins/qmlpreview/qmlpreviewplugin.cpp | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/plugins/qmlpreview/qmlpreviewplugin.cpp b/src/plugins/qmlpreview/qmlpreviewplugin.cpp index f71653b026a..d5b0b1379ce 100644 --- a/src/plugins/qmlpreview/qmlpreviewplugin.cpp +++ b/src/plugins/qmlpreview/qmlpreviewplugin.cpp @@ -99,8 +99,19 @@ static QByteArray defaultFileLoader(const QString &filename, bool *success) static bool defaultFileClassifier(const QString &filename) { - // We cannot dynamically load changes in qtquickcontrols2.conf - return !filename.endsWith("qtquickcontrols2.conf"); + const QStringList list = { + ".glslv", + ".glslf", + "​.vsh", + ".fsh", + "qtquickcontrols2.conf" }; + + for (const QString &suffix : list) + if (filename.endsWith(suffix)) + return false; + + // We cannot dynamically load changes in qtquickcontrols2.conf and shaders + return true; } static void defaultFpsHandler(quint16 frames[8]) From ec0135f517a05dfb67ea7b06ac6f2d8882230ca4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Sch=C3=A4pers?= Date: Fri, 11 Dec 2020 23:43:35 +0100 Subject: [PATCH 03/16] qml2puppet: Fix build with MinGW Which was broken in 5daee38e. Change-Id: Ic43ed4528cb5e2c831e07b17a2ee118583b54526 Reviewed-by: Thomas Hartmann --- share/qtcreator/qml/qmlpuppet/qml2puppet/qml2puppet.pri | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/qml2puppet.pri b/share/qtcreator/qml/qmlpuppet/qml2puppet/qml2puppet.pri index f0285ca4b0d..940047c6b2c 100644 --- a/share/qtcreator/qml/qmlpuppet/qml2puppet/qml2puppet.pri +++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/qml2puppet.pri @@ -2,7 +2,7 @@ QT += core gui widgets qml quick network QT += core-private qml-private quick-private gui-private CONFIG += c++17 -win32: QMAKE_CXXFLAGS += /std:c++17 +win32:!mingw: QMAKE_CXXFLAGS += /std:c++17 DEFINES -= QT_CREATOR From b309bdc69d4d12a55474f178d1d7d08462c4e9b3 Mon Sep 17 00:00:00 2001 From: David Schulz Date: Tue, 15 Dec 2020 09:45:10 +0100 Subject: [PATCH 04/16] Editor: Fix searching in blockselections BaseTextFind::findOne relies on calling inFindScope via QMetaObject::invokeMethod. broken by a4e23025f0ae34ca3f96474b28aefd51a668b8ad Fixes: QTCREATORBUG-25006 Change-Id: Iac061b1ecf2bbc3063494a324ad554e5cf749b15 Reviewed-by: Eike Ziller --- src/plugins/texteditor/texteditor.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/plugins/texteditor/texteditor.h b/src/plugins/texteditor/texteditor.h index 6e693e36978..16dee4f2f68 100644 --- a/src/plugins/texteditor/texteditor.h +++ b/src/plugins/texteditor/texteditor.h @@ -609,8 +609,8 @@ protected: virtual void slotCursorPositionChanged(); // Used in VcsBase virtual void slotCodeStyleSettingsChanged(const QVariant &); // Used in CppEditor - bool inFindScope(const QTextCursor &cursor); - bool inFindScope(int selectionStart, int selectionEnd); + Q_INVOKABLE bool inFindScope(const QTextCursor &cursor); + Q_INVOKABLE bool inFindScope(int selectionStart, int selectionEnd); private: Internal::TextEditorWidgetPrivate *d; From e0661e06306b40c61ffc45fdd7ee77ab24933b13 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Tue, 15 Dec 2020 10:56:59 +0100 Subject: [PATCH 05/16] Help: Update to head of litehtml This adds support for ordered lists. Change-Id: I6ede0cc170e25c410ec440690f1f873fb24c490e Reviewed-by: Cristian Adam --- src/plugins/help/qlitehtml/litehtml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/help/qlitehtml/litehtml b/src/plugins/help/qlitehtml/litehtml index 816730ff1f9..8c1f09405a0 160000 --- a/src/plugins/help/qlitehtml/litehtml +++ b/src/plugins/help/qlitehtml/litehtml @@ -1 +1 @@ -Subproject commit 816730ff1f94201dc7ea8189c81ab9f404abc941 +Subproject commit 8c1f09405a086fdb09196606e5c0f9bc113beec3 From 663827478a2d39839c5eeb81414cf4bbd7ecddaf Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Tue, 15 Dec 2020 13:23:56 +0100 Subject: [PATCH 06/16] QmlDesigner: Remove invisible char Change-Id: I559076ccfdcb7fb3767f6767310a84cc113b6c46 Reviewed-by: Miikka Heikkinen --- src/plugins/qmlpreview/qmlpreviewplugin.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/qmlpreview/qmlpreviewplugin.cpp b/src/plugins/qmlpreview/qmlpreviewplugin.cpp index d5b0b1379ce..9f2f51b66d1 100644 --- a/src/plugins/qmlpreview/qmlpreviewplugin.cpp +++ b/src/plugins/qmlpreview/qmlpreviewplugin.cpp @@ -102,7 +102,7 @@ static bool defaultFileClassifier(const QString &filename) const QStringList list = { ".glslv", ".glslf", - "​.vsh", + ".vsh", ".fsh", "qtquickcontrols2.conf" }; From 7dd067979aa3dcecafb4d973336c654acd8a1278 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Tue, 15 Dec 2020 13:27:41 +0100 Subject: [PATCH 07/16] QmlPreview: Add missing shader suffixes Change-Id: I78f8ddea5de5fa01fb69de62d47587254b9daae8 Reviewed-by: Miikka Heikkinen --- src/plugins/qmlpreview/qmlpreviewplugin.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/plugins/qmlpreview/qmlpreviewplugin.cpp b/src/plugins/qmlpreview/qmlpreviewplugin.cpp index 9f2f51b66d1..fa409586ba3 100644 --- a/src/plugins/qmlpreview/qmlpreviewplugin.cpp +++ b/src/plugins/qmlpreview/qmlpreviewplugin.cpp @@ -100,10 +100,13 @@ static QByteArray defaultFileLoader(const QString &filename, bool *success) static bool defaultFileClassifier(const QString &filename) { const QStringList list = { + ".glsl", ".glslv", ".glslf", ".vsh", ".fsh", + ".frag", + ".vert", "qtquickcontrols2.conf" }; for (const QString &suffix : list) From dc297f09b0f17a4e358b1fdc14eda42a9b19ce47 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Tue, 15 Dec 2020 13:14:09 +0100 Subject: [PATCH 08/16] cmake build: Fix configuration for BUILD_LIBRARIES_BY_DEFAULT=OFF Or BUILD_LIBRARY_YAML-CPP=OFF. In that case the add_qtc_library does not result in a target, so we must check before accessing it, and should not claim that yaml-cpp is available if it isn't. Change-Id: I710ce726d65f7a1c036fd94ebeb18ead290a45f2 Reviewed-by: Cristian Adam --- cmake/Findyaml-cpp.cmake | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/cmake/Findyaml-cpp.cmake b/cmake/Findyaml-cpp.cmake index 2c5b2a60d25..b122ea8a32c 100644 --- a/cmake/Findyaml-cpp.cmake +++ b/cmake/Findyaml-cpp.cmake @@ -17,8 +17,6 @@ if (yaml-cpp_FOUND) endif() set_target_properties(yaml-cpp PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${yaml_cpp_include_dir}") else() - set(yaml-cpp_FOUND 1) - set_package_properties(yaml-cpp PROPERTIES DESCRIPTION "using internal src/libs/3rdparty/yaml-cpp") set(YAML_SOURCE_DIR ${PROJECT_SOURCE_DIR}/src/libs/3rdparty/yaml-cpp) add_qtc_library(yaml-cpp DEFINES YAML_CPP_DLL yaml_cpp_EXPORTS @@ -114,8 +112,12 @@ else() ${YAML_SOURCE_DIR}/src/tag.h ${YAML_SOURCE_DIR}/src/token.h ) - if(MSVC) - target_compile_options(yaml-cpp PUBLIC /wd4251 /wd4275) + if(TARGET yaml-cpp) + set(yaml-cpp_FOUND 1) + set_package_properties(yaml-cpp PROPERTIES DESCRIPTION "using internal src/libs/3rdparty/yaml-cpp") + if(MSVC) + target_compile_options(yaml-cpp PUBLIC /wd4251 /wd4275) + endif() endif() unset(YAML_SOURCE_DIR) endif() From f239fa86764d9a1721ff043c5bb42ac007e9909c Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Tue, 15 Dec 2020 11:37:17 +0100 Subject: [PATCH 09/16] Fix build-time location of QLiteHtml QtCreatorAPI sets the output location relative to the project which makes sense for external projects, but not so much for internal sub-projects. In this specific case it cannot be built as a standalone project at all anymore, since we use add_qtc_library but don't force inclusion of QtCreatorAPI, so just remove the project() and related setup. When QLiteHtml is moved to an actual separate project and repository this must be reworked anyhow. Change-Id: I182de09619c2073aa3e1c9809c2251fd88b6bbd7 Reviewed-by: David Schulz Reviewed-by: Cristian Adam --- src/plugins/help/qlitehtml/CMakeLists.txt | 27 ++++++++++++++--------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/src/plugins/help/qlitehtml/CMakeLists.txt b/src/plugins/help/qlitehtml/CMakeLists.txt index 19a003db04b..5c7957a88c5 100644 --- a/src/plugins/help/qlitehtml/CMakeLists.txt +++ b/src/plugins/help/qlitehtml/CMakeLists.txt @@ -1,14 +1,26 @@ -cmake_minimum_required(VERSION 3.10) - -project(QLiteHtml) - if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/litehtml/CMakeLists.txt) set(ORIG_FPIC ${CMAKE_POSITION_INDEPENDENT_CODE}) if (WIN32) set(LITEHTML_UTF8 ON CACHE BOOL "") endif() set(CMAKE_POSITION_INDEPENDENT_CODE ON) + + # suppress warning about VERSION being overwritten or not + # and add subdirectory + set(ORIG_VERSION ${PROJECT_VERSION}) + set(ORIG_MAJOR ${PROJECT_VERSION_MAJOR}) + set(ORIG_MINOR ${PROJECT_VERSION_MINOR}) + set(ORIG_PATCH ${PROJECT_VERSION_PATCH}) + set(PROJECT_VERSION "") + set(PROJECT_VERSION_MAJOR "") + set(PROJECT_VERSION_MINOR "") + set(PROJECT_VERSION_PATCH "") add_subdirectory(litehtml EXCLUDE_FROM_ALL) + set(PROJECT_VERSION ${ORIG_VERSION}) + set(PROJECT_VERSION_MAJOR ${ORIG_MAJOR}) + set(PROJECT_VERSION_MINOR ${ORIG_MINOR}) + set(PROJECT_VERSION_PATCH ${ORIG_PATCH}) + set(CMAKE_POSITION_INDEPENDENT_CODE "${ORIG_FPIC}") # force optimized litehtml even in debug if (CMAKE_BUILD_TYPE STREQUAL "Debug") @@ -22,13 +34,6 @@ else() find_package(litehtml REQUIRED) endif() -find_package(Qt5 COMPONENTS Widgets REQUIRED) - -set(CMAKE_AUTOMOC ON) -set(CMAKE_AUTORCC ON) -set(CMAKE_AUTOUIC ON) -set(CMAKE_CXX_STANDARD 17) - add_qtc_library(qlitehtml PUBLIC_INCLUDES ${CMAKE_CURRENT_SOURCE_DIR} DEPENDS Qt5::Widgets litehtml From e8e2aa8c7f6f47055afe17cebedeaa0d1b8ad576 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Cotty?= Date: Fri, 27 Nov 2020 19:39:20 +0100 Subject: [PATCH 10/16] Android: fix debugging with qbs If the default libs path doesn't exist (which is the case for qbs) then try to get the abis using the current project node data method using the Android::Constants::ANDROID_ABIS flag. Because in multiplex (multi arch) mode dynamic libraries are compiled in different products, library paths must be gathered from those sibling products using the "dependencies" json array. Change-Id: I9409a6a12fd9f304f427ed7868a7060c8f985a0b Reviewed-by: Christian Kandeler --- src/plugins/android/androidmanager.cpp | 5 ++ src/plugins/qbsprojectmanager/qbsnodes.cpp | 63 ++++++++++++++++++-- src/plugins/qbsprojectmanager/qbsnodes.h | 3 + src/plugins/qbsprojectmanager/qbssession.cpp | 2 + 4 files changed, 69 insertions(+), 4 deletions(-) diff --git a/src/plugins/android/androidmanager.cpp b/src/plugins/android/androidmanager.cpp index fd681a5db83..3a5124a6242 100644 --- a/src/plugins/android/androidmanager.cpp +++ b/src/plugins/android/androidmanager.cpp @@ -372,6 +372,11 @@ static QString preferredAbi(const QStringList &appAbis, const Target *target) QString AndroidManager::apkDevicePreferredAbi(const Target *target) { auto libsPath = dirPath(target).pathAppended("libs"); + if (!libsPath.exists()) { + if (const ProjectNode *node = currentProjectNode(target)) + return preferredAbi(node->data(Android::Constants::ANDROID_ABIS).toStringList(), + target); + } QStringList apkAbis; for (const auto &abi : QDir{libsPath.toString()}.entryList(QDir::Dirs | QDir::NoDotAndDotDot)) if (!QDir{libsPath.pathAppended(abi).toString()}.entryList(QStringList("*.so"), QDir::Files | QDir::NoDotAndDotDot).isEmpty()) diff --git a/src/plugins/qbsprojectmanager/qbsnodes.cpp b/src/plugins/qbsprojectmanager/qbsnodes.cpp index 61b7b005dec..68731e30a12 100644 --- a/src/plugins/qbsprojectmanager/qbsnodes.cpp +++ b/src/plugins/qbsprojectmanager/qbsnodes.cpp @@ -151,6 +151,33 @@ QString QbsProductNode::getBuildKey(const QJsonObject &product) + product.value("multiplex-configuration-id").toString(); } +bool QbsProductNode::isAggregated() const +{ + return m_productData.value("is-multiplexed").toBool() + && m_productData.value("multiplex-configuration-id").toString().isEmpty(); +} + +const QList QbsProductNode::aggregatedProducts() const +{ + if (!isAggregated()) + return {}; + const ProjectNode *parentNode = managingProject(); + QTC_ASSERT(parentNode != nullptr && parentNode != this, return {}); + + QSet dependencies; + for (const auto &a : m_productData.value("dependencies").toArray()) + dependencies << a.toString(); + + QList qbsProducts; + parentNode->forEachProjectNode([&qbsProducts, dependencies](const ProjectNode *node) { + if (const auto qbsChildNode = dynamic_cast(node)) { + if (dependencies.contains(qbsChildNode->fullDisplayName())) + qbsProducts << qbsChildNode; + } + }); + return qbsProducts; +} + QVariant QbsProductNode::data(Id role) const { if (role == Android::Constants::AndroidDeploySettingsFile) { @@ -164,10 +191,16 @@ QVariant QbsProductNode::data(Id role) const if (role == Android::Constants::AndroidSoLibPath) { QStringList ret{m_productData.value("build-directory").toString()}; - forAllArtifacts(m_productData, ArtifactType::Generated, [&ret](const QJsonObject &artifact) { - if (artifact.value("file-tags").toArray().contains("dynamiclibrary")) - ret << QFileInfo(artifact.value("file-path").toString()).path(); - }); + if (!isAggregated()) { + forAllArtifacts(m_productData, ArtifactType::Generated, + [&ret](const QJsonObject &artifact) { + if (artifact.value("file-tags").toArray().contains("dynamiclibrary")) + ret << QFileInfo(artifact.value("file-path").toString()).path(); + }); + } else { + for (const auto &a : aggregatedProducts()) + ret += a->data(Android::Constants::AndroidSoLibPath).toStringList(); + } ret.removeDuplicates(); return ret; } @@ -188,6 +221,28 @@ QVariant QbsProductNode::data(Id role) const return m_productData.value("module-properties").toObject() .value("Qt.core.enableKeywords").toBool(); + if (role == Android::Constants::ANDROID_ABIS) { + // Try using qbs.architectures + QStringList qbsAbis; + QMap archToAbi { + {"armv7a", ProjectExplorer::Constants::ANDROID_ABI_ARMEABI_V7A}, + {"arm64", ProjectExplorer::Constants::ANDROID_ABI_ARM64_V8A}, + {"x86", ProjectExplorer::Constants::ANDROID_ABI_X86}, + {"x86_64", ProjectExplorer::Constants::ANDROID_ABI_X86_64}}; + for (const auto &a : m_productData.value("module-properties").toObject() + .value(Constants::QBS_ARCHITECTURES).toArray()) { + if (archToAbi.contains(a.toString())) + qbsAbis << archToAbi[a.toString()]; + } + if (!qbsAbis.empty()) + return qbsAbis; + // Try using qbs.architecture + QString architecture = m_productData.value("module-properties").toObject() + .value(Constants::QBS_ARCHITECTURE).toString(); + if (archToAbi.contains(architecture)) + qbsAbis << archToAbi[architecture]; + return qbsAbis; + } return {}; } diff --git a/src/plugins/qbsprojectmanager/qbsnodes.h b/src/plugins/qbsprojectmanager/qbsnodes.h index f5131e0f73c..0f188ea6dc0 100644 --- a/src/plugins/qbsprojectmanager/qbsnodes.h +++ b/src/plugins/qbsprojectmanager/qbsnodes.h @@ -65,6 +65,9 @@ public: static QString getBuildKey(const QJsonObject &product); + bool isAggregated() const; + const QList aggregatedProducts() const; + const QJsonObject productData() const { return m_productData; } QJsonObject mainGroup() const; QVariant data(Utils::Id role) const override; diff --git a/src/plugins/qbsprojectmanager/qbssession.cpp b/src/plugins/qbsprojectmanager/qbssession.cpp index 7485aa3b90b..621572f265d 100644 --- a/src/plugins/qbsprojectmanager/qbssession.cpp +++ b/src/plugins/qbsprojectmanager/qbssession.cpp @@ -376,6 +376,8 @@ RunEnvironmentResult QbsSession::getRunEnvironment( void QbsSession::insertRequestedModuleProperties(QJsonObject &request) { request.insert("module-properties", QJsonArray::fromStringList({ + "qbs.architecture", + "qbs.architectures", "cpp.commonCompilerFlags", "cpp.compilerVersionMajor", "cpp.compilerVersionMinor", From d68603481d9f76f9b5cf5632750637652df9b4c2 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Wed, 16 Dec 2020 08:57:37 +0100 Subject: [PATCH 11/16] Revert "Help: Update to head of litehtml" Breaks build on MSVC. This reverts commit e0661e06306b40c61ffc45fdd7ee77ab24933b13. Change-Id: Id6e6c1b83ad1dbbe6cad8b555d66fea2e76e9c7d Reviewed-by: Tim Jenssen --- src/plugins/help/qlitehtml/litehtml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/help/qlitehtml/litehtml b/src/plugins/help/qlitehtml/litehtml index 8c1f09405a0..816730ff1f9 160000 --- a/src/plugins/help/qlitehtml/litehtml +++ b/src/plugins/help/qlitehtml/litehtml @@ -1 +1 @@ -Subproject commit 8c1f09405a086fdb09196606e5c0f9bc113beec3 +Subproject commit 816730ff1f94201dc7ea8189c81ab9f404abc941 From 909f74dc56201de9fc06fbe4e4ea368245bc0dd8 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Wed, 16 Dec 2020 13:23:23 +0100 Subject: [PATCH 12/16] Fix deployment of clang tools on Windows Amends ca016bfb2e7a78253b1ad5dfc457583e8491be1a Change-Id: I529f7f37b86f086167774e3c8d03761d4cc654a9 Reviewed-by: Cristian Adam --- scripts/deployqt.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/deployqt.py b/scripts/deployqt.py index 4dc11b6cf59..e032f45decb 100755 --- a/scripts/deployqt.py +++ b/scripts/deployqt.py @@ -239,7 +239,7 @@ def deploy_libclang(install_dir, llvm_install_dir, chrpath_bin): deployinfo.append((os.path.join(llvm_install_dir, 'bin', 'libclang.dll'), os.path.join(install_dir, 'bin'))) for binary in ['clang', 'clang-cl', 'clangd', 'clang-tidy', 'clazy-standalone']: - binary_filepath = os.path.join(llvm_install_dir, 'bin', 'clang.exe') + binary_filepath = os.path.join(llvm_install_dir, 'bin', binary + '.exe') if os.path.exists(binary_filepath): deployinfo.append((binary_filepath, clangbindirtarget)) resourcetarget = os.path.join(clanglibdirtarget, 'clang') From ac2a7bac4b64d2d72d081bd2b1a907bb71a11057 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Wed, 16 Dec 2020 13:47:02 +0100 Subject: [PATCH 13/16] Update changelog for 4.14 Change-Id: Ifb8cd68eab9abfb861c06586e1ca0ca5a43e3d27 Reviewed-by: Leena Miettinen --- dist/changes-4.14.0.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/dist/changes-4.14.0.md b/dist/changes-4.14.0.md index 7dd06282574..a3b4dc9cd31 100644 --- a/dist/changes-4.14.0.md +++ b/dist/changes-4.14.0.md @@ -28,6 +28,7 @@ Editing ### C++ +* Updated to LLVM 11 * Added refactoring action that creates getters and setters for all class members (QTCREATORBUG-14504) * Added refactoring action that generates member from class member initialization @@ -207,17 +208,20 @@ André Pönitz Antonio Di Monaco Asit Dhal Assam Boudjelthia +Björn Schäpers Christiaan Janssen Christian Kandeler Christian Stenger Cristian Adam David Schulz +Dawid Sliwa Denis Shienkov Eike Ziller Fabio Falsini Fawzi Mohamed Federico Guerinoni Henning Gruendl +Ivan Komissarov Jaroslaw Kobus Jeremy Ephron Jochen Seemann @@ -233,16 +237,22 @@ Mahmoud Badri Marco Bubke Martin Kampas Michael Weghorn +Michael Winkelmann Miikka Heikkinen Miklós Márton Morten Johan Sørvig Orgad Shaneh +Oswald Buddenhagen +Raphaël Cotty +Richard Weickelt Robert Löhning Tasuku Suzuki Thiago Macieira Thomas Hartmann Tim Jenssen Tobias Hunger +Venugopal Shivashankar Vikas Pachdha +Ville Voutilainen Volodymyr Zibarov Wojciech Smigaj From c723db712903982d44b2e262c90675dd4e502caa Mon Sep 17 00:00:00 2001 From: hjk Date: Thu, 17 Dec 2020 10:56:26 +0100 Subject: [PATCH 14/16] ProjectExplorer: Make ContainerAspect emit when subaspect changed This fixes updating the -j part of the command when job count overriding is enabled. Task-number: QTCREATORBUG-25088 Change-Id: Id5af007fe8de463f761136da0f1109bf902b766f Reviewed-by: Christian Kandeler --- src/libs/utils/aspects.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/libs/utils/aspects.cpp b/src/libs/utils/aspects.cpp index 4f17830aec1..79509a6b9d2 100644 --- a/src/libs/utils/aspects.cpp +++ b/src/libs/utils/aspects.cpp @@ -1358,6 +1358,7 @@ AspectContainer::~AspectContainer() = default; void AspectContainer::addAspectHelper(BaseAspect *aspect) { d->m_items.append(aspect); + connect(aspect, &BaseAspect::changed, this, &BaseAspect::changed); } /*! From 8d9c39fa30b401cdae8174a4cf530dbef705d6d6 Mon Sep 17 00:00:00 2001 From: Tim Jenssen Date: Thu, 17 Dec 2020 12:00:12 +0100 Subject: [PATCH 15/16] qmldesigner: on exit crash fix Change-Id: I11d4e6b6b7bb2d8d862015718ae432b1eaaa8b57 Reviewed-by: Thomas Hartmann --- src/libs/advanceddockingsystem/dockmanager.cpp | 12 +++++++----- src/libs/advanceddockingsystem/dockmanager.h | 2 +- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/libs/advanceddockingsystem/dockmanager.cpp b/src/libs/advanceddockingsystem/dockmanager.cpp index 4615df6bfeb..dd67af205a2 100644 --- a/src/libs/advanceddockingsystem/dockmanager.cpp +++ b/src/libs/advanceddockingsystem/dockmanager.cpp @@ -92,7 +92,7 @@ namespace ADS { public: DockManager *q; - QList m_floatingWidgets; + QList> m_floatingWidgets; QList m_containers; DockOverlay *m_containerOverlay = nullptr; DockOverlay *m_dockAreaOverlay = nullptr; @@ -357,9 +357,11 @@ namespace ADS save(); saveStartupWorkspace(); - for (auto floatingWidget : d->m_floatingWidgets) - delete floatingWidget; - + for (auto floatingWidget : d->m_floatingWidgets) { + if (floatingWidget) + delete floatingWidget.data(); + } + d->m_floatingWidgets.clear(); delete d; } @@ -485,7 +487,7 @@ namespace ADS return d->m_containers; } - const QList DockManager::floatingWidgets() const + const QList> DockManager::floatingWidgets() const { return d->m_floatingWidgets; } diff --git a/src/libs/advanceddockingsystem/dockmanager.h b/src/libs/advanceddockingsystem/dockmanager.h index 43ba751e48b..174239e22a7 100644 --- a/src/libs/advanceddockingsystem/dockmanager.h +++ b/src/libs/advanceddockingsystem/dockmanager.h @@ -389,7 +389,7 @@ public: /** * Returns the list of all floating widgets. */ - const QList floatingWidgets() const; + const QList > floatingWidgets() const; /** * This function always return 0 because the main window is always behind From 1ae893de26b91c42b041d8e15b9a2651d809b69d Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Thu, 17 Dec 2020 10:40:48 +0100 Subject: [PATCH 16/16] StudioWelcome: Do not start with .ui.qml file Opening the design mode while a project is still loaded can become incredbly slow. Change-Id: I692c736269fb130dc33461dcb8a5f6e6e6765b88 Reviewed-by: Brook Cronin Reviewed-by: Tim Jenssen --- .../studiowelcome/qml/welcomepage/ExamplesModel.qml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/plugins/studiowelcome/qml/welcomepage/ExamplesModel.qml b/src/plugins/studiowelcome/qml/welcomepage/ExamplesModel.qml index e4dc358b591..97bbbb597f4 100644 --- a/src/plugins/studiowelcome/qml/welcomepage/ExamplesModel.qml +++ b/src/plugins/studiowelcome/qml/welcomepage/ExamplesModel.qml @@ -28,7 +28,7 @@ import QtQuick 2.0 ListModel { ListElement { projectName: "ClusterTutorial" - qmlFileName: "Cluster_Art.ui.qml" + qmlFileName: "ClusterTutorial.qml" thumbnail: "images/tutorialclusterdemo_thumbnail.png" displayName: "Cluster Tutorial" } @@ -42,21 +42,21 @@ ListModel { ListElement { projectName: "SideMenu" - qmlFileName: "MainFile.ui.qml" + qmlFileName: "SideMenu.qml" thumbnail: "images/sidemenu_demo.png" displayName: "Side Menu" } ListElement { projectName: "WebinarDemo" - qmlFileName: "MainApp.ui.qml" + qmlFileName: "DesignStudioWebinar.qml" thumbnail: "images/webinardemo_thumbnail.png" displayName: "Webinar Demo" } ListElement { projectName: "EBikeDesign" - qmlFileName: "Screen01.ui.qml" + qmlFileName: "EBikeDesign.qml" thumbnail: "images/ebike_demo_thumbnail.png" displayName: "E-Bike Design" }