From 8ccbff951b7e7f4262ac28398f839a0722716187 Mon Sep 17 00:00:00 2001 From: blobfish Date: Sun, 11 Dec 2016 16:20:16 -0500 Subject: [PATCH] Gui: DAGView: adding check for App::DocumentObject --- src/Gui/DAGView/DAGModel.cpp | 2 ++ src/Gui/DAGView/DAGModelGraph.cpp | 8 ++++++++ src/Gui/DAGView/DAGModelGraph.h | 1 + 3 files changed, 11 insertions(+) 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);