OSDN Git Service

QmlDesigner.rewriter: crash fix
authorThomas Hartmann <Thomas.Hartmann@nokia.com>
Thu, 26 May 2011 10:10:02 +0000 (12:10 +0200)
committerThomas Hartmann <Thomas.Hartmann@nokia.com>
Thu, 26 May 2011 10:12:31 +0000 (12:12 +0200)
When converting nodes into implcit components the default properties
turns from a list property into a (single) node property.
This patch takes this into account.

Change-Id: I85f7ee1f8109da0c001804a0804a07b7acdee3ca
Reviewed-on: http://codereview.qt.nokia.com/135
Reviewed-by: Thomas Hartmann <Thomas.Hartmann@nokia.com>
src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp

index afed131..ebdaf7b 100644 (file)
@@ -1450,7 +1450,7 @@ ModelNode ModelAmender::listPropertyMissingModelNode(NodeListProperty &modelProp
     if (propertyTakesComponent)
         m_merger->setupComponent(newNode);
 
-    if (modelProperty.isDefaultProperty()) { //In the default property case we do some magic
+    if (modelProperty.isDefaultProperty() || isComponentType(modelProperty.parentModelNode().type())) { //In the default property case we do some magic
         if (modelProperty.isNodeListProperty()) {
             modelProperty.reparentHere(newNode);
         } else { //The default property could a NodeProperty implicitly (delegate:)
@@ -1490,7 +1490,7 @@ void ModelAmender::typeDiffers(bool isRootNode,
                                                              context,
                                                              *this);
         parentProperty.reparentHere(newNode);
-        if (nodeIndex >= 0) {
+        if (parentProperty.isNodeListProperty()) {
             int currentIndex = parentProperty.toNodeListProperty().toModelNodeList().indexOf(newNode);
             if (nodeIndex != currentIndex)
                 parentProperty.toNodeListProperty().slide(currentIndex, nodeIndex);