diff --git a/app/widget/nodeparamview/nodeparamviewitem.cpp b/app/widget/nodeparamview/nodeparamviewitem.cpp index 50e275a0c..12bf48e13 100644 --- a/app/widget/nodeparamview/nodeparamviewitem.cpp +++ b/app/widget/nodeparamview/nodeparamviewitem.cpp @@ -97,6 +97,8 @@ NodeParamViewItemBody::NodeParamViewItemBody(Node* node, NodeParamViewCheckBoxBe int insert_row = 0; + QVector connected_signals; + // Create widgets all root level components foreach (QString input, node->inputs()) { Node *n = node; @@ -106,6 +108,14 @@ NodeParamViewItemBody::NodeParamViewItemBody(Node* node, NodeParamViewCheckBoxBe input = ni.input(); } + if (!connected_signals.contains(n)) { + connect(n, &Node::InputArraySizeChanged, this, &NodeParamViewItemBody::InputArraySizeChanged); + connect(n, &Node::InputConnected, this, &NodeParamViewItemBody::EdgeChanged); + connect(n, &Node::InputDisconnected, this, &NodeParamViewItemBody::EdgeChanged); + + connected_signals.append(n); + } + if (!(n->GetInputFlags(input) & kInputFlagHidden)) { CreateWidgets(root_layout, n, input, -1, insert_row); @@ -137,10 +147,6 @@ NodeParamViewItemBody::NodeParamViewItemBody(Node* node, NodeParamViewCheckBoxBe } } } - - connect(node, &Node::InputArraySizeChanged, this, &NodeParamViewItemBody::InputArraySizeChanged); - connect(node, &Node::InputConnected, this, &NodeParamViewItemBody::EdgeChanged); - connect(node, &Node::InputDisconnected, this, &NodeParamViewItemBody::EdgeChanged); } void NodeParamViewItemBody::CreateWidgets(QGridLayout* layout, Node *node, const QString &input, int element, int row)