diff options
author | Thomas Hartmann <Thomas.Hartmann@digia.com> | 2014-08-04 14:00:01 +0200 |
---|---|---|
committer | Thomas Hartmann <Thomas.Hartmann@digia.com> | 2014-08-04 18:48:03 +0200 |
commit | 316bfcaee14fff0b58e1a8cd8cbdb46776359aa6 (patch) | |
tree | cb07a77840c4c4c3793aa4340927c0b074c981b0 /src/plugins/qmldesigner | |
parent | 798af5d70eafcb93630fe7c132ecf82887e2967a (diff) | |
download | qt-creator-316bfcaee14fff0b58e1a8cd8cbdb46776359aa6.tar.gz |
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 <tim.jenssen@digia.com>
Diffstat (limited to 'src/plugins/qmldesigner')
-rw-r--r-- | src/plugins/qmldesigner/designercore/model/modelnode.cpp | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/src/plugins/qmldesigner/designercore/model/modelnode.cpp b/src/plugins/qmldesigner/designercore/model/modelnode.cpp index 533b879b04..88d38d083d 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; |