QmlDesigner: Only remove node with position

Extending the test case.

Change-Id: I37255de763262e069c2f9d30b1ce584a0347fbcf
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
This commit is contained in:
Thomas Hartmann
2022-06-23 16:20:39 +02:00
parent 93cd068d3e
commit 34491bdfc3
2 changed files with 29 additions and 3 deletions

View File

@@ -166,7 +166,10 @@ void RewriteActionCompressor::compressReparentIntoNewPropertyActions(QList<Rewri
if (m_positionStore->nodeOffset(reparentAction->targetProperty().parentModelNode()) < 0) {
actionsToRemove.append(action);
removeActions.append(new RemoveNodeRewriteAction(reparentAction->reparentedNode()));
const ModelNode childNode = reparentAction->reparentedNode();
if (m_positionStore->nodeOffset(childNode) > 0)
removeActions.append(new RemoveNodeRewriteAction(childNode));
}
}
}

View File

@@ -1181,7 +1181,7 @@ void tst_TestCore::testRewriterReparentToNewNode()
const QList<ModelNode> children = rootModelNode.directSubModelNodes();
ModelNode rectangle = testRewriterView->createModelNode("QtQuick.Rectangle", 2, 0);
ModelNode rectangle = testRewriterView->createModelNode("QtQuick.Rectangle");
rootModelNode.nodeListProperty("data").reparentHere(rectangle);
rectangle.setIdWithoutRefactoring("newParent");
@@ -1193,7 +1193,7 @@ void tst_TestCore::testRewriterReparentToNewNode()
{
RewriterTransaction transaction = testRewriterView->beginRewriterTransaction("TEST");
ModelNode rectangle = testRewriterView->createModelNode("QtQuick.Rectangle", 2, 0);
ModelNode rectangle = testRewriterView->createModelNode("QtQuick.Rectangle");
rootModelNode.nodeListProperty("data").reparentHere(rectangle);
rectangle.setIdWithoutRefactoring("newParent2");
@@ -1223,6 +1223,29 @@ void tst_TestCore::testRewriterReparentToNewNode()
QCOMPARE(textEdit.toPlainText(), expectedOutcome);
rectangle.destroy();
QCOMPARE(testRewriterView->allModelNodes().count(), 6);
{
RewriterTransaction transaction = testRewriterView->beginRewriterTransaction("TEST");
ModelNode newChild = testRewriterView->createModelNode("QtQuick.Rectangle");
rootModelNode.nodeListProperty("data").reparentHere(newChild);
newChild.setIdWithoutRefactoring("newChild");
ModelNode newParent = testRewriterView->createModelNode("QtQuick.Rectangle");
rootModelNode.nodeListProperty("data").reparentHere(newParent);
newParent.setIdWithoutRefactoring("newParent3");
for (const ModelNode &child : children)
newParent.nodeListProperty("data").reparentHere(child);
newParent.nodeListProperty("data").reparentHere(newChild);
}
QCOMPARE(testRewriterView->allModelNodes().count(), 8);
}
void tst_TestCore::testRewriterForGradientMagic()