@@ -271,14 +271,14 @@ QVariant DataFlowGraphModel::nodeData(NodeId nodeId, NodeRole role) const
271271 break ;
272272
273273 case NodeRole::Style: {
274- auto style = _models. at (nodeId) ->nodeStyle ();
274+ auto style = model ->nodeStyle ();
275275 result = style.toJson ().toVariantMap ();
276276 } break ;
277277
278278 case NodeRole::InternalData: {
279279 QJsonObject nodeJson;
280280
281- nodeJson[" internal-data" ] = _models. at (nodeId) ->save ();
281+ nodeJson[" internal-data" ] = model ->save ();
282282
283283 result = nodeJson.toVariantMap ();
284284 break ;
@@ -302,13 +302,16 @@ QVariant DataFlowGraphModel::nodeData(NodeId nodeId, NodeRole role) const
302302 result = QVariant::fromValue (validationState);
303303 } break ;
304304
305- case NodeRole::LabelVisible:
306- result = _labelsVisible.at (nodeId);
307- break ;
305+ case NodeRole::LabelVisible: {
306+ auto const labelVisibleIt = _labelsVisible.find (nodeId);
307+ result = (labelVisibleIt != _labelsVisible.end ()) ? labelVisibleIt->second
308+ : model->labelVisible ();
309+ } break ;
308310
309- case NodeRole::Label:
310- result = _labels.at (nodeId);
311- break ;
311+ case NodeRole::Label: {
312+ auto const labelIt = _labels.find (nodeId);
313+ result = (labelIt != _labels.end ()) ? labelIt->second : model->label ();
314+ } break ;
312315
313316 case NodeRole::LabelEditable:
314317 result = model->labelEditable ();
@@ -532,12 +535,22 @@ QJsonObject DataFlowGraphModel::saveNode(NodeId const nodeId) const
532535{
533536 QJsonObject nodeJson;
534537
538+ auto const modelIt = _models.find (nodeId);
539+ if (modelIt == _models.end ()) {
540+ return nodeJson;
541+ }
542+
543+ auto const &model = modelIt->second ;
544+
535545 nodeJson[" id" ] = static_cast <qint64>(nodeId);
546+ nodeJson[" internal-data" ] = model->save ();
536547
537- nodeJson[" internal-data" ] = _models.at (nodeId)->save ();
548+ auto const labelIt = _labels.find (nodeId);
549+ nodeJson[" label" ] = (labelIt != _labels.end ()) ? labelIt->second : model->label ();
538550
539- nodeJson[" label" ] = _labels.at (nodeId);
540- nodeJson[" labelVisible" ] = _labelsVisible.at (nodeId);
551+ auto const labelVisibleIt = _labelsVisible.find (nodeId);
552+ nodeJson[" labelVisible" ] = (labelVisibleIt != _labelsVisible.end ()) ? labelVisibleIt->second
553+ : model->labelVisible ();
541554
542555 {
543556 QPointF const pos = nodeData (nodeId, NodeRole::Position).value <QPointF>();
0 commit comments