Skip to content

Commit 5465ddc

Browse files
raymentpaceholder
authored andcommitted
Fixed non-emit of NodeDelegateModel::in/outputConnectionCreated/Deleted.
The four virtual functions in NodeDelegateModel were not being called anywhere in code as the logic was removed when FlowScene.cpp was removed as part of the v3 upgrade. This functionality has been restored thanks to two new functions `DataFlowGraphModel::sendConnectionCreation` and `DataFlowGraphModel::sendConnectionDeletion` which call the slots on both the input and output nodes of any given connection. Functions are: - inputConnectionCreated - inputConnectionDeleted - outputConnectionCreated - outputConnectionDeleted Signed-off-by: Finn Rayment <finn@rayment.fr>
1 parent 98a1260 commit 5465ddc

File tree

3 files changed

+35
-3
lines changed

3 files changed

+35
-3
lines changed

include/QtNodes/internal/DataFlowGraphModel.hpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,10 @@ class NODE_EDITOR_PUBLIC DataFlowGraphModel : public AbstractGraphModel, public
100100
private:
101101
NodeId newNodeId() override { return _nextNodeId++; }
102102

103+
void sendConnectionCreation(ConnectionId const connectionId);
104+
105+
void sendConnectionDeletion(ConnectionId const connectionId);
106+
103107
private Q_SLOTS:
104108
/**
105109
* Fuction is called in three cases:

include/QtNodes/internal/NodeDelegateModel.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ class StyleCollection;
1717
/**
1818
* The class wraps Node-specific data operations and propagates it to
1919
* the nesting DataFlowGraphModel which is a subclass of
20-
* AbstractGrapModel.
20+
* AbstractGraphModel.
2121
* This class is the same what has been called NodeDataModel before v3.
2222
*/
2323
class NODE_EDITOR_PUBLIC NodeDelegateModel : public QObject, public Serializable

src/DataFlowGraphModel.cpp

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ void DataFlowGraphModel::addConnection(ConnectionId const connectionId)
132132
{
133133
_connectivity.insert(connectionId);
134134

135-
Q_EMIT connectionCreated(connectionId);
135+
sendConnectionCreation(connectionId);
136136

137137
QVariant const portDataToPropagate = portData(connectionId.outNodeId,
138138
PortType::Out,
@@ -146,6 +146,34 @@ void DataFlowGraphModel::addConnection(ConnectionId const connectionId)
146146
PortRole::Data);
147147
}
148148

149+
void DataFlowGraphModel::sendConnectionCreation(ConnectionId const connectionId)
150+
{
151+
Q_EMIT connectionCreated(connectionId);
152+
153+
auto iti = _models.find(connectionId.inNodeId);
154+
auto ito = _models.find(connectionId.outNodeId);
155+
if (iti != _models.end() && ito != _models.end()) {
156+
auto &modeli = iti->second;
157+
auto &modelo = ito->second;
158+
modeli->inputConnectionCreated(connectionId);
159+
modelo->outputConnectionCreated(connectionId);
160+
}
161+
}
162+
163+
void DataFlowGraphModel::sendConnectionDeletion(ConnectionId const connectionId)
164+
{
165+
Q_EMIT connectionDeleted(connectionId);
166+
167+
auto iti = _models.find(connectionId.inNodeId);
168+
auto ito = _models.find(connectionId.outNodeId);
169+
if (iti != _models.end() && ito != _models.end()) {
170+
auto &modeli = iti->second;
171+
auto &modelo = ito->second;
172+
modeli->inputConnectionDeleted(connectionId);
173+
modelo->outputConnectionDeleted(connectionId);
174+
}
175+
}
176+
149177
bool DataFlowGraphModel::nodeExists(NodeId const nodeId) const
150178
{
151179
return (_models.find(nodeId) != _models.end());
@@ -355,7 +383,7 @@ bool DataFlowGraphModel::deleteConnection(ConnectionId const connectionId)
355383
}
356384

357385
if (disconnected) {
358-
Q_EMIT connectionDeleted(connectionId);
386+
sendConnectionDeletion(connectionId);
359387

360388
propagateEmptyDataTo(getNodeId(PortType::In, connectionId),
361389
getPortIndex(PortType::In, connectionId));

0 commit comments

Comments
 (0)