@@ -37,6 +37,9 @@ Node(std::unique_ptr<NodeDataModel> && dataModel)
3737 connect (_nodeDataModel.get (), &NodeDataModel::dataUpdated,
3838 this , &Node::onDataUpdated);
3939
40+ connect (_nodeDataModel.get (), &NodeDataModel::dataInvalidated,
41+ this , &Node::onDataInvalidated);
42+
4043 connect (_nodeDataModel.get (), &NodeDataModel::embeddedWidgetSizeUpdated,
4144 this , &Node::onNodeSizeUpdated );
4245}
@@ -190,7 +193,9 @@ propagateData(std::shared_ptr<NodeData> nodeData,
190193{
191194 _nodeDataModel->setInData (std::move (nodeData), inPortIndex, connectionId);
192195
193- // Recalculate the nodes visuals. A data change can result in the node taking more space than before, so this forces a recalculate+repaint on the affected node
196+ // Recalculate the nodes visuals. A data change can result in the
197+ // node taking more space than before, so this forces a
198+ // recalculate+repaint on the affected node.
194199 _nodeGraphicsObject->setGeometryChanged ();
195200 _nodeGeometry.recalculateSize ();
196201 _nodeGraphicsObject->update ();
@@ -204,31 +209,43 @@ onDataUpdated(PortIndex index)
204209{
205210 auto nodeData = _nodeDataModel->outData (index);
206211
207- auto connections =
212+ auto const & connections =
208213 _nodeState.connections (PortType::Out, index);
209214
210215 for (auto const & c : connections)
211216 c.second ->propagateData (nodeData);
212217}
213218
219+
220+ void
221+ Node::
222+ onDataInvalidated (PortIndex index)
223+ {
224+ auto const &connections =
225+ _nodeState.connections (PortType::Out, index);
226+
227+ for (auto const & c : connections)
228+ c.second ->propagateEmptyData ();
229+ }
230+
214231void
215232Node::
216233onNodeSizeUpdated ()
217234{
218- if ( nodeDataModel ()->embeddedWidget () )
219- {
220- nodeDataModel ()->embeddedWidget ()->adjustSize ();
221- }
222- nodeGeometry ().recalculateSize ();
223- for (PortType type: {PortType::In, PortType::Out})
235+ if ( nodeDataModel ()->embeddedWidget () )
236+ {
237+ nodeDataModel ()->embeddedWidget ()->adjustSize ();
238+ }
239+ nodeGeometry ().recalculateSize ();
240+ for (PortType type: {PortType::In, PortType::Out})
241+ {
242+ for (auto & conn_set : nodeState ().getEntries (type))
224243 {
225- for (auto & conn_set : nodeState ().getEntries (type))
226- {
227- for (auto & pair: conn_set)
228- {
229- Connection* conn = pair.second ;
230- conn->getConnectionGraphicsObject ().move ();
231- }
232- }
244+ for (auto & pair: conn_set)
245+ {
246+ Connection* conn = pair.second ;
247+ conn->getConnectionGraphicsObject ().move ();
248+ }
233249 }
250+ }
234251}
0 commit comments