diff --git a/src/Gui/DAGView/DAGModel.cpp b/src/Gui/DAGView/DAGModel.cpp index 140caf8d4..a1fbe6eee 100644 --- a/src/Gui/DAGView/DAGModel.cpp +++ b/src/Gui/DAGView/DAGModel.cpp @@ -479,6 +479,8 @@ void Model::updateSlot() std::vector otherDObjects = currentDObject->getOutList(); for (auto ¤tOtherDObject : otherDObjects) { + if (!hasRecord(currentOtherDObject, *graphLink)) + continue; Vertex otherVertex = findRecord(currentOtherDObject, *graphLink).vertex; bool result; Edge edge; diff --git a/src/Gui/DAGView/DAGModelGraph.cpp b/src/Gui/DAGView/DAGModelGraph.cpp index b31f14f06..c74d3c332 100644 --- a/src/Gui/DAGView/DAGModelGraph.cpp +++ b/src/Gui/DAGView/DAGModelGraph.cpp @@ -57,6 +57,14 @@ EdgeProperty::EdgeProperty() : relation(BranchTag::None) } +bool Gui::DAG::hasRecord(const App::DocumentObject* dObjectIn, const GraphLinkContainer &containerIn) +{ + typedef GraphLinkContainer::index::type List; + const List &list = containerIn.get(); + List::const_iterator it = list.find(dObjectIn); + return it != list.end(); +} + const GraphLinkRecord& Gui::DAG::findRecord(Vertex vertexIn, const GraphLinkContainer &containerIn) { typedef GraphLinkContainer::index::type List; diff --git a/src/Gui/DAGView/DAGModelGraph.h b/src/Gui/DAGView/DAGModelGraph.h index ec71177a4..e6af0a067 100644 --- a/src/Gui/DAGView/DAGModelGraph.h +++ b/src/Gui/DAGView/DAGModelGraph.h @@ -280,6 +280,7 @@ namespace Gui > > GraphLinkContainer; + bool hasRecord(const App::DocumentObject* dObjectIn, const GraphLinkContainer &containerIn); const GraphLinkRecord& findRecord(Vertex vertexIn, const GraphLinkContainer &containerIn); const GraphLinkRecord& findRecord(const App::DocumentObject* dObjectIn, const GraphLinkContainer &containerIn); const GraphLinkRecord& findRecord(const Gui::ViewProviderDocumentObject* VPDObjectIn, const GraphLinkContainer &containerIn);