diff --git a/src/plugins/qmldesigner/components/navigator/navigatortreemodel.cpp b/src/plugins/qmldesigner/components/navigator/navigatortreemodel.cpp index 4b891ce6eee..354612a3c24 100644 --- a/src/plugins/qmldesigner/components/navigator/navigatortreemodel.cpp +++ b/src/plugins/qmldesigner/components/navigator/navigatortreemodel.cpp @@ -666,20 +666,24 @@ static bool isInLayoutable(NodeAbstractProperty &parentProperty) static void reparentModelNodeToNodeProperty(NodeAbstractProperty &parentProperty, const ModelNode &modelNode) { - if (!modelNode.hasParentProperty() || parentProperty != modelNode.parentProperty()) { - if (isInLayoutable(parentProperty)) { - removePosition(modelNode); - parentProperty.reparentHere(modelNode); - } else { - if (QmlItemNode::isValidQmlItemNode(modelNode)) { - QPointF scenePosition = QmlItemNode(modelNode).instanceScenePosition(); + try { + if (!modelNode.hasParentProperty() || parentProperty != modelNode.parentProperty()) { + if (isInLayoutable(parentProperty)) { + removePosition(modelNode); parentProperty.reparentHere(modelNode); - if (!scenePosition.isNull()) - setScenePosition(modelNode, scenePosition); } else { - parentProperty.reparentHere(modelNode); + if (QmlItemNode::isValidQmlItemNode(modelNode)) { + QPointF scenePosition = QmlItemNode(modelNode).instanceScenePosition(); + parentProperty.reparentHere(modelNode); + if (!scenePosition.isNull()) + setScenePosition(modelNode, scenePosition); + } else { + parentProperty.reparentHere(modelNode); + } } } + } catch (const RewritingException &exception) { //better safe than sorry! There always might be cases where we fail + exception.showException(); } }