From 316bfcaee14fff0b58e1a8cd8cbdb46776359aa6 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Mon, 4 Aug 2014 14:00:01 +0200 Subject: [PATCH] QmlDesigner.Model: Fix isComponent for Loader Loader was also interpreted as a component, but the handling of component and sourceComponent was incorrect. Change-Id: I5cd691ece1a29c77b52dc74785013f08d589b2eb Reviewed-by: Tim Jenssen --- .../designercore/model/modelnode.cpp | 24 ++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/src/plugins/qmldesigner/designercore/model/modelnode.cpp b/src/plugins/qmldesigner/designercore/model/modelnode.cpp index 533b879b046..88d38d083db 100644 --- a/src/plugins/qmldesigner/designercore/model/modelnode.cpp +++ b/src/plugins/qmldesigner/designercore/model/modelnode.cpp @@ -1061,9 +1061,27 @@ bool ModelNode::isComponent() const } if (metaInfo().isSubclassOf("QtQuick.Loader", -1 , -1)) { - if (hasNodeProperty("component") - && nodeProperty("component").modelNode().nodeSourceType() == ModelNode::NodeWithComponentSource) - return true; + + if (hasNodeListProperty("component")) { + + /* + * The component property should be a NodeProperty, but currently is a NodeListProperty, because + * the default property is always implcitly a NodeListProperty. This is something that has to be fixed. + */ + + ModelNode componentNode = nodeListProperty("component").toModelNodeList().first(); + if (componentNode.nodeSourceType() == ModelNode::NodeWithComponentSource) + return true; + if (componentNode.metaInfo().isFileComponent()) + return true; + } + + if (hasNodeProperty("sourceComponent")) { + if (nodeProperty("sourceComponent").modelNode().nodeSourceType() == ModelNode::NodeWithComponentSource) + return true; + if (nodeProperty("sourceComponent").modelNode().metaInfo().isFileComponent()) + return true; + } if (hasVariantProperty("source")) return true;