diff options
author | Tim Jenssen <tim.jenssen@qt.io> | 2022-07-01 11:19:21 +0200 |
---|---|---|
committer | Tim Jenssen <tim.jenssen@qt.io> | 2022-07-01 09:22:10 +0000 |
commit | 56bcad81adb7268773b902ece0fc065d01f3db27 (patch) | |
tree | ad19b5f8f6bbeeedffcde2549bd83ab0ac0d25d1 /src/plugins/qmldesigner/designercore/model/rewriteactioncompressor.cpp | |
parent | a920bbf59fb071af2e6bfb306dec07bb8ba94924 (diff) | |
parent | 234958a47a6edcd17bae255411a5b0f0bbaea6c7 (diff) | |
download | qt-creator-56bcad81adb7268773b902ece0fc065d01f3db27.tar.gz |
Merge remote-tracking branch 'origin/7.0' into 8.0
Change-Id: I7cd5d3808007ef739212f4347ba9b16e7b298943
Diffstat (limited to 'src/plugins/qmldesigner/designercore/model/rewriteactioncompressor.cpp')
-rw-r--r-- | src/plugins/qmldesigner/designercore/model/rewriteactioncompressor.cpp | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/src/plugins/qmldesigner/designercore/model/rewriteactioncompressor.cpp b/src/plugins/qmldesigner/designercore/model/rewriteactioncompressor.cpp index 6422765ec3..abdba53823 100644 --- a/src/plugins/qmldesigner/designercore/model/rewriteactioncompressor.cpp +++ b/src/plugins/qmldesigner/designercore/model/rewriteactioncompressor.cpp @@ -56,6 +56,7 @@ void RewriteActionCompressor::operator()(QList<RewriteAction *> &actions, compressImports(actions); compressRereparentActions(actions); compressReparentIntoSamePropertyActions(actions); + compressReparentIntoNewPropertyActions(actions); compressPropertyActions(actions); compressAddEditRemoveNodeActions(actions); compressAddEditActions(actions, tabSettings); @@ -152,6 +153,35 @@ void RewriteActionCompressor::compressReparentIntoSamePropertyActions(QList<Rewr } } +void RewriteActionCompressor::compressReparentIntoNewPropertyActions(QList<RewriteAction *> &actions) const +{ + QList<RewriteAction *> actionsToRemove; + + QList<RewriteAction *> removeActions; + + for (int i = actions.size(); --i >= 0; ) { + RewriteAction *action = actions.at(i); + + if (ReparentNodeRewriteAction *reparentAction = action->asReparentNodeRewriteAction()) { + if (m_positionStore->nodeOffset(reparentAction->targetProperty().parentModelNode()) < 0) { + actionsToRemove.append(action); + + const ModelNode childNode = reparentAction->reparentedNode(); + + if (m_positionStore->nodeOffset(childNode) > 0) + removeActions.append(new RemoveNodeRewriteAction(childNode)); + } + } + } + + for (RewriteAction *action : qAsConst(actionsToRemove)) { + actions.removeOne(action); + delete action; + } + + actions.append(removeActions); +} + void RewriteActionCompressor::compressAddEditRemoveNodeActions(QList<RewriteAction *> &actions) const { QList<RewriteAction *> actionsToRemove; |