aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/qmldesigner/designercore/model/modelmerger.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/qmldesigner/designercore/model/modelmerger.cpp')
-rw-r--r--src/plugins/qmldesigner/designercore/model/modelmerger.cpp40
1 files changed, 17 insertions, 23 deletions
diff --git a/src/plugins/qmldesigner/designercore/model/modelmerger.cpp b/src/plugins/qmldesigner/designercore/model/modelmerger.cpp
index 161cf1f9f5..8517f9cb82 100644
--- a/src/plugins/qmldesigner/designercore/model/modelmerger.cpp
+++ b/src/plugins/qmldesigner/designercore/model/modelmerger.cpp
@@ -178,29 +178,23 @@ void ModelMerger::replaceModel(const ModelNode &modelNode)
view()->model()->changeImports(modelNode.model()->imports(), {});
view()->model()->setFileUrl(modelNode.model()->fileUrl());
- try {
- RewriterTransaction transaction(view()->beginRewriterTransaction(QByteArrayLiteral("ModelMerger::replaceModel")));
-
- ModelNode rootNode(view()->rootModelNode());
-
- foreach (const PropertyName &propertyName, rootNode.propertyNames())
- rootNode.removeProperty(propertyName);
-
- QHash<QString, QString> idRenamingHash;
- setupIdRenamingHash(modelNode, idRenamingHash, view());
-
- syncAuxiliaryProperties(rootNode, modelNode);
- syncVariantProperties(rootNode, modelNode);
- syncBindingProperties(rootNode, modelNode, idRenamingHash);
- syncId(rootNode, modelNode, idRenamingHash);
- syncNodeProperties(rootNode, modelNode, idRenamingHash, view());
- syncNodeListProperties(rootNode, modelNode, idRenamingHash, view());
- m_view->changeRootNodeType(modelNode.type(), modelNode.majorVersion(), modelNode.minorVersion());
-
- transaction.commit();
- } catch (const RewritingException &e) {
- qWarning() << e.description(); //silent error
- }
+ view()->executeInTransaction("ModelMerger::replaceModel", [this, modelNode](){
+ ModelNode rootNode(view()->rootModelNode());
+
+ foreach (const PropertyName &propertyName, rootNode.propertyNames())
+ rootNode.removeProperty(propertyName);
+
+ QHash<QString, QString> idRenamingHash;
+ setupIdRenamingHash(modelNode, idRenamingHash, view());
+
+ syncAuxiliaryProperties(rootNode, modelNode);
+ syncVariantProperties(rootNode, modelNode);
+ syncBindingProperties(rootNode, modelNode, idRenamingHash);
+ syncId(rootNode, modelNode, idRenamingHash);
+ syncNodeProperties(rootNode, modelNode, idRenamingHash, view());
+ syncNodeListProperties(rootNode, modelNode, idRenamingHash, view());
+ m_view->changeRootNodeType(modelNode.type(), modelNode.majorVersion(), modelNode.minorVersion());
+ });
}
} //namespace QmlDesigner