QmlDesigner: Make connection generation a bit more robust

* Do not hardcode the typename
* Handle types without defailt property/non visual nodes

Change-Id: I0db0173f7ec645dc42cdf52824fdc5ba1389bb13
Reviewed-by: Aleksei German <aleksei.german@qt.io>
This commit is contained in:
Thomas Hartmann
2023-03-23 15:58:09 +01:00
parent 3b1c9ea882
commit 1e2c8d42e3

View File

@@ -587,10 +587,15 @@ QList<SlotList> getSlotsLists(const ModelNode &node)
ModelNode createNewConnection(ModelNode targetNode) ModelNode createNewConnection(ModelNode targetNode)
{ {
NodeMetaInfo connectionsMetaInfo = targetNode.view()->model()->qtQuickConnectionsMetaInfo(); NodeMetaInfo connectionsMetaInfo = targetNode.view()->model()->qtQuickConnectionsMetaInfo();
ModelNode newConnectionNode = targetNode.view()->createModelNode( ModelNode newConnectionNode = targetNode.view()->createModelNode(connectionsMetaInfo.typeName(),
"QtQuick.Connections", connectionsMetaInfo.majorVersion(), connectionsMetaInfo.minorVersion()); connectionsMetaInfo.majorVersion(),
if (QmlItemNode::isValidQmlItemNode(targetNode)) connectionsMetaInfo.minorVersion());
if (QmlItemNode::isValidQmlItemNode(targetNode)) {
targetNode.nodeAbstractProperty("data").reparentHere(newConnectionNode); targetNode.nodeAbstractProperty("data").reparentHere(newConnectionNode);
} else {
targetNode.view()->rootModelNode().defaultNodeAbstractProperty().reparentHere(
newConnectionNode);
}
newConnectionNode.bindingProperty("target").setExpression(targetNode.id()); newConnectionNode.bindingProperty("target").setExpression(targetNode.id());