From 1f24a2fa4a42a9a1761f7a47610411c2955ba068 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Fri, 26 Apr 2024 15:17:37 +0200 Subject: [PATCH] QmlDesigner: Allow using selected node in QmlModelNodeProxy::moveNode() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I4c08a3fbfe750a8a9673828acfe542f9b8365e66 Reviewed-by: Henning Gründl Reviewed-by: Qt CI Patch Build Bot --- .../propertyeditor/qmlmodelnodeproxy.cpp | 26 ++++++++++--------- 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/src/plugins/qmldesigner/components/propertyeditor/qmlmodelnodeproxy.cpp b/src/plugins/qmldesigner/components/propertyeditor/qmlmodelnodeproxy.cpp index fc39b371375..1cff0e55e68 100644 --- a/src/plugins/qmldesigner/components/propertyeditor/qmlmodelnodeproxy.cpp +++ b/src/plugins/qmldesigner/components/propertyeditor/qmlmodelnodeproxy.cpp @@ -161,13 +161,12 @@ void QmlModelNodeProxy::createModelNode(int internalIdParent, const QString &typeName, const QString &requiredImport) { - QTC_ASSERT(m_qmlObjectNode.isValid(), return ); - - auto modelNode = m_qmlObjectNode.modelNode(); - - AbstractView *view = modelNode.view(); - auto parentModelNode = m_qmlObjectNode.modelNode(); + + QTC_ASSERT(parentModelNode.isValid(), return ); + + AbstractView *view = parentModelNode.view(); + if (internalIdParent >= 0) parentModelNode = view->modelNodeForInternalId(internalIdParent); @@ -186,7 +185,7 @@ void QmlModelNodeProxy::createModelNode(int internalIdParent, #ifdef QDS_USE_PROJECTSTORAGE ModelNode newNode = view->createModelNode(typeName.toUtf8()); #else - NodeMetaInfo metaInfo = modelNode.model()->metaInfo(typeName.toUtf8()); + NodeMetaInfo metaInfo = parentModelNode.model()->metaInfo(typeName.toUtf8()); ModelNode newNode = view->createModelNode(metaInfo.typeName(), metaInfo.majorVersion(), metaInfo.minorVersion()); @@ -200,14 +199,17 @@ void QmlModelNodeProxy::moveNode(int internalIdParent, int fromIndex, int toIndex) { - QTC_ASSERT(m_qmlObjectNode.isValid(), return ); + ModelNode modelNode = m_qmlObjectNode.modelNode(); - ModelNode node = m_qmlObjectNode.view()->modelNodeForInternalId(internalIdParent); + QTC_ASSERT(modelNode.isValid(), return ); - QTC_ASSERT(node.isValid(), return ); + if (internalIdParent >= 0) + modelNode = m_qmlObjectNode.view()->modelNodeForInternalId(internalIdParent); + + QTC_ASSERT(modelNode.isValid(), return ); AbstractView *view = m_qmlObjectNode.view(); - view->executeInTransaction("QmlModelNodeProxy::swapNode", [&] { - node.nodeListProperty(propertyName.toUtf8()).slide(fromIndex, toIndex); + view->executeInTransaction("QmlModelNodeProxy::moveNode", [&] { + modelNode.nodeListProperty(propertyName.toUtf8()).slide(fromIndex, toIndex); }); }