From c8779e9c9376585d909c393f2a2060f33277dcc3 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Thu, 13 Feb 2020 13:04:37 +0100 Subject: [PATCH] QmlDesigner: Create connections inside the target element Change-Id: I29e00e4f90d1fec2f230a989c7b04f64e8b81a9b Reviewed-by: Tim Jenssen --- .../connectioneditor/connectionmodel.cpp | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/plugins/qmldesigner/components/connectioneditor/connectionmodel.cpp b/src/plugins/qmldesigner/components/connectioneditor/connectionmodel.cpp index 1347c76045b..560be7c4f6b 100644 --- a/src/plugins/qmldesigner/components/connectioneditor/connectionmodel.cpp +++ b/src/plugins/qmldesigner/components/connectioneditor/connectionmodel.cpp @@ -33,6 +33,7 @@ #include #include #include +#include #include #include @@ -210,6 +211,10 @@ void ConnectionModel::updateTargetNode(int rowNumber) ModelNode connectionNode = signalHandlerProperty.parentModelNode(); if (!newTarget.isEmpty()) { + const ModelNode parent = connectionView()->modelNodeForId(newTarget); + if (parent.isValid() && QmlItemNode::isValidQmlItemNode(parent)) + parent.nodeListProperty("data").reparentHere(connectionNode); + connectionView()->executeInTransaction("ConnectionModel::updateTargetNode", [= ,&connectionNode](){ connectionNode.bindingProperty("target").setExpression(newTarget); }); @@ -255,14 +260,21 @@ void ConnectionModel::addConnection() nodeMetaInfo.majorVersion(), nodeMetaInfo.minorVersion()); - rootModelNode.nodeAbstractProperty(rootModelNode.metaInfo().defaultPropertyName()).reparentHere(newNode); newNode.signalHandlerProperty("onClicked").setSource(QLatin1String("print(\"clicked\")")); - if (connectionView()->selectedModelNodes().count() == 1 - && !connectionView()->selectedModelNodes().constFirst().id().isEmpty()) { + if (connectionView()->selectedModelNodes().count() == 1) { const ModelNode selectedNode = connectionView()->selectedModelNodes().constFirst(); + if (QmlItemNode::isValidQmlItemNode(selectedNode)) + selectedNode.nodeAbstractProperty("data").reparentHere(newNode); + else + rootModelNode.nodeAbstractProperty(rootModelNode.metaInfo().defaultPropertyName()).reparentHere(newNode); + + if (!connectionView()->selectedModelNodes().constFirst().id().isEmpty()) newNode.bindingProperty("target").setExpression(selectedNode.id()); + else + newNode.bindingProperty("target").setExpression(QLatin1String("parent")); } else { + rootModelNode.nodeAbstractProperty(rootModelNode.metaInfo().defaultPropertyName()).reparentHere(newNode); newNode.bindingProperty("target").setExpression(QLatin1String("parent")); } });