QmlDesigner: Allow using selected node in QmlModelNodeProxy::moveNode()

Change-Id: I4c08a3fbfe750a8a9673828acfe542f9b8365e66
Reviewed-by: Henning Gründl <henning.gruendl@qt.io>
Reviewed-by: Qt CI Patch Build Bot <ci_patchbuild_bot@qt.io>
This commit is contained in:
Thomas Hartmann
2024-04-26 15:17:37 +02:00
parent b0b1542814
commit 1f24a2fa4a

View File

@@ -161,13 +161,12 @@ void QmlModelNodeProxy::createModelNode(int internalIdParent,
const QString &typeName, const QString &typeName,
const QString &requiredImport) const QString &requiredImport)
{ {
QTC_ASSERT(m_qmlObjectNode.isValid(), return );
auto modelNode = m_qmlObjectNode.modelNode();
AbstractView *view = modelNode.view();
auto parentModelNode = m_qmlObjectNode.modelNode(); auto parentModelNode = m_qmlObjectNode.modelNode();
QTC_ASSERT(parentModelNode.isValid(), return );
AbstractView *view = parentModelNode.view();
if (internalIdParent >= 0) if (internalIdParent >= 0)
parentModelNode = view->modelNodeForInternalId(internalIdParent); parentModelNode = view->modelNodeForInternalId(internalIdParent);
@@ -186,7 +185,7 @@ void QmlModelNodeProxy::createModelNode(int internalIdParent,
#ifdef QDS_USE_PROJECTSTORAGE #ifdef QDS_USE_PROJECTSTORAGE
ModelNode newNode = view->createModelNode(typeName.toUtf8()); ModelNode newNode = view->createModelNode(typeName.toUtf8());
#else #else
NodeMetaInfo metaInfo = modelNode.model()->metaInfo(typeName.toUtf8()); NodeMetaInfo metaInfo = parentModelNode.model()->metaInfo(typeName.toUtf8());
ModelNode newNode = view->createModelNode(metaInfo.typeName(), ModelNode newNode = view->createModelNode(metaInfo.typeName(),
metaInfo.majorVersion(), metaInfo.majorVersion(),
metaInfo.minorVersion()); metaInfo.minorVersion());
@@ -200,14 +199,17 @@ void QmlModelNodeProxy::moveNode(int internalIdParent,
int fromIndex, int fromIndex,
int toIndex) 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(); AbstractView *view = m_qmlObjectNode.view();
view->executeInTransaction("QmlModelNodeProxy::swapNode", [&] { view->executeInTransaction("QmlModelNodeProxy::moveNode", [&] {
node.nodeListProperty(propertyName.toUtf8()).slide(fromIndex, toIndex); modelNode.nodeListProperty(propertyName.toUtf8()).slide(fromIndex, toIndex);
}); });
} }