From 9f33f76a9723b615b6176695796dc87f845ba03d Mon Sep 17 00:00:00 2001 From: Miikka Heikkinen Date: Mon, 10 May 2021 14:49:56 +0300 Subject: [PATCH 1/4] QmlPuppet: Fix crash when editing importing 3D component Fixes: QDS-4334 Change-Id: I03c79ae7e51d6821823e19d813eba483ec5981c7 Reviewed-by: Mahmoud Badri --- .../qmlpuppet/qml2puppet/instances/qt5nodeinstanceserver.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5nodeinstanceserver.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5nodeinstanceserver.cpp index a9dc0874138..a669aad6fc9 100644 --- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5nodeinstanceserver.cpp +++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5nodeinstanceserver.cpp @@ -145,7 +145,8 @@ void Qt5NodeInstanceServer::resizeCanvasToRootItem() { #if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) m_viewData.bufferDirty = true; - m_viewData.contentItem->setPosition(-m_viewData.rootItem->position()); + if (m_viewData.contentItem) + m_viewData.contentItem->setPosition(-m_viewData.rootItem->position()); #endif quickWindow()->resize(rootNodeInstance().boundingRect().size().toSize()); } From 671b71406b61d52952cb02e3c4eda7f3a0a748ba Mon Sep 17 00:00:00 2001 From: Jarek Kobus Date: Tue, 11 May 2021 13:48:54 +0200 Subject: [PATCH 2/4] Fix a crash in Find Usages Set the current index of SearchResultWindow to a valid one _before_ deleting the last SerachResultWidget inside the m_widget QStackedWidget, as this triggers the call to updateFilterButton() which uses in turn the current index of SearchResultWindow (out or range in case it's not adjusted beforehand). Fixes: QTCREATORBUG-25713 Change-Id: Ie155c5f9bacee8d647e4fa7f622ff403192cb6bc Reviewed-by: Eike Ziller --- src/plugins/coreplugin/find/searchresultwindow.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/plugins/coreplugin/find/searchresultwindow.cpp b/src/plugins/coreplugin/find/searchresultwindow.cpp index af87935623f..fb04e7b8b86 100644 --- a/src/plugins/coreplugin/find/searchresultwindow.cpp +++ b/src/plugins/coreplugin/find/searchresultwindow.cpp @@ -499,15 +499,15 @@ SearchResult *SearchResultWindow::startNewSearch(const QString &label, const QString &cfgGroup) { if (d->m_searchResults.size() >= MAX_SEARCH_HISTORY) { + if (d->m_currentIndex >= d->m_recentSearchesBox->count() - 1) { + // temporarily set the index to the last but one existing + d->m_currentIndex = d->m_recentSearchesBox->count() - 2; + } d->m_searchResultWidgets.last()->notifyVisibilityChanged(false); // widget first, because that might send interesting signals to SearchResult delete d->m_searchResultWidgets.takeLast(); delete d->m_searchResults.takeLast(); d->m_recentSearchesBox->removeItem(d->m_recentSearchesBox->count()-1); - if (d->m_currentIndex >= d->m_recentSearchesBox->count()) { - // temporarily set the index to the last existing - d->m_currentIndex = d->m_recentSearchesBox->count() - 1; - } } auto widget = new SearchResultWidget; connect(widget, &SearchResultWidget::filterInvalidated, this, [this, widget] { From 5574deebe0f535781da2b37f1610af512b944a07 Mon Sep 17 00:00:00 2001 From: Christian Stenger Date: Wed, 12 May 2021 12:18:47 +0200 Subject: [PATCH 3/4] LSP: Fix MinGW build While at it correct a typo for the inner class name. Change-Id: I9026f4c35ccf43744e64b1337f056b5e43669502 Reviewed-by: Cristian Adam Reviewed-by: David Schulz --- src/libs/languageserverprotocol/workspace.cpp | 2 +- src/libs/languageserverprotocol/workspace.h | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/libs/languageserverprotocol/workspace.cpp b/src/libs/languageserverprotocol/workspace.cpp index 53c20dd40bc..2f9e800548a 100644 --- a/src/libs/languageserverprotocol/workspace.cpp +++ b/src/libs/languageserverprotocol/workspace.cpp @@ -78,7 +78,7 @@ bool WorkspaceFoldersChangeEvent::isValid(ErrorHierarchy *error) const && checkArray(error, removedKey); } -bool ConfigurationParams::ConfigureationItem::isValid(ErrorHierarchy *error) const +bool ConfigurationParams::ConfigurationItem::isValid(ErrorHierarchy *error) const { return checkOptional(error, scopeUriKey) && checkOptional(error, sectionKey); diff --git a/src/libs/languageserverprotocol/workspace.h b/src/libs/languageserverprotocol/workspace.h index 5747311d442..a93d6c893af 100644 --- a/src/libs/languageserverprotocol/workspace.h +++ b/src/libs/languageserverprotocol/workspace.h @@ -110,7 +110,7 @@ class LANGUAGESERVERPROTOCOL_EXPORT ConfigurationParams : public JsonObject { public: using JsonObject::JsonObject; - class ConfigureationItem : public JsonObject + class LANGUAGESERVERPROTOCOL_EXPORT ConfigurationItem : public JsonObject { public: using JsonObject::JsonObject; @@ -126,11 +126,11 @@ public: bool isValid(ErrorHierarchy *error) const override; }; - QList items() const { return array(itemsKey); } - void setItems(const QList &items) { insertArray(itemsKey, items); } + QList items() const { return array(itemsKey); } + void setItems(const QList &items) { insertArray(itemsKey, items); } bool isValid(ErrorHierarchy *error) const override - { return checkArray(error, itemsKey); } + { return checkArray(error, itemsKey); } }; class LANGUAGESERVERPROTOCOL_EXPORT ConfigurationRequest : public Request< From 0cef9a8554437a7ed7033198dffc5baa647d67e4 Mon Sep 17 00:00:00 2001 From: Christian Stenger Date: Wed, 12 May 2021 14:37:41 +0200 Subject: [PATCH 4/4] AutoTest: Fix crash in gtest support If the parser processes a test with an empty test name it crashed QC. Change-Id: Ic377f609ecdd74724ee7a272be3d5b60f0101afa Reviewed-by: David Schulz --- src/plugins/autotest/gtest/gtestvisitors.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/plugins/autotest/gtest/gtestvisitors.cpp b/src/plugins/autotest/gtest/gtestvisitors.cpp index 9f622acb5b5..b3e36b67ca1 100644 --- a/src/plugins/autotest/gtest/gtestvisitors.cpp +++ b/src/plugins/autotest/gtest/gtestvisitors.cpp @@ -94,8 +94,12 @@ bool GTestVisitor::visit(CPlusPlus::FunctionDefinitionAST *ast) testCaseName.clear(); } } else { - const CPlusPlus::Argument *testSuiteNameArg = ast->symbol->argumentAt(0)->asArgument(); - const CPlusPlus::Argument *testCaseNameArg = ast->symbol->argumentAt(1)->asArgument(); + const CPlusPlus::Symbol *firstArg = ast->symbol->argumentAt(0); + const CPlusPlus::Symbol *secondArg = ast->symbol->argumentAt(1); + if (!firstArg || !secondArg) + return false; + const CPlusPlus::Argument *testSuiteNameArg = firstArg->asArgument(); + const CPlusPlus::Argument *testCaseNameArg = secondArg->asArgument(); if (testSuiteNameArg && testCaseNameArg) { testSuiteName = m_overview.prettyType(testSuiteNameArg->type()); testCaseName = m_overview.prettyType(testCaseNameArg->type());