aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Hartmann <thomas.hartmann@qt.io>2022-06-23 16:20:39 +0200
committerThomas Hartmann <thomas.hartmann@qt.io>2022-06-24 08:32:14 +0000
commit34491bdfc34e518b902c1dd2085ef64d8680e315 (patch)
tree7b3ea298b4b4f1557de9282bc227a249a846f263
parent93cd068d3e6cadb78f007975853828be35a4e1c6 (diff)
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>
-rw-r--r--src/plugins/qmldesigner/designercore/model/rewriteactioncompressor.cpp5
-rw-r--r--tests/auto/qml/qmldesigner/coretests/tst_testcore.cpp27
2 files changed, 29 insertions, 3 deletions
diff --git a/src/plugins/qmldesigner/designercore/model/rewriteactioncompressor.cpp b/src/plugins/qmldesigner/designercore/model/rewriteactioncompressor.cpp
index c014bcd4d7..0662da4e86 100644
--- a/src/plugins/qmldesigner/designercore/model/rewriteactioncompressor.cpp
+++ b/src/plugins/qmldesigner/designercore/model/rewriteactioncompressor.cpp
@@ -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));
}
}
}
diff --git a/tests/auto/qml/qmldesigner/coretests/tst_testcore.cpp b/tests/auto/qml/qmldesigner/coretests/tst_testcore.cpp
index f6708d2c8f..b6ff4903c4 100644
--- a/tests/auto/qml/qmldesigner/coretests/tst_testcore.cpp
+++ b/tests/auto/qml/qmldesigner/coretests/tst_testcore.cpp
@@ -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()