DAG: Add method hasRecord() and use it in Model::slotChangeObject
to avoid a possible failing assert(). Fixes #17572
This commit is contained in:
@@ -308,15 +308,21 @@ void Model::slotChangeObject(const ViewProviderDocumentObject &VPDObjectIn, cons
|
||||
//renaming of objects.
|
||||
if (std::string("Label") == name)
|
||||
{
|
||||
const GraphLinkRecord &record = findRecord(&VPDObjectIn, *graphLink);
|
||||
auto text = (*theGraph)[record.vertex].text.get();
|
||||
text->setPlainText(QString::fromUtf8(record.DObject->Label.getValue()));
|
||||
if (hasRecord(&VPDObjectIn, *graphLink))
|
||||
{
|
||||
const GraphLinkRecord &record = findRecord(&VPDObjectIn, *graphLink);
|
||||
auto text = (*theGraph)[record.vertex].text.get();
|
||||
text->setPlainText(QString::fromUtf8(record.DObject->Label.getValue()));
|
||||
}
|
||||
}
|
||||
else if (propertyIn.isDerivedFrom(App::PropertyLinkBase::getClassTypeId()))
|
||||
{
|
||||
const GraphLinkRecord &record = findRecord(&VPDObjectIn, *graphLink);
|
||||
boost::clear_vertex(record.vertex, *theGraph);
|
||||
graphDirty = true;
|
||||
if (hasRecord(&VPDObjectIn, *graphLink))
|
||||
{
|
||||
const GraphLinkRecord &record = findRecord(&VPDObjectIn, *graphLink);
|
||||
boost::clear_vertex(record.vertex, *theGraph);
|
||||
graphDirty = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -55,6 +55,14 @@ bool Gui::DAG::hasRecord(const App::DocumentObject* dObjectIn, const GraphLinkCo
|
||||
return it != list.end();
|
||||
}
|
||||
|
||||
bool Gui::DAG::hasRecord(const ViewProviderDocumentObject* VPDObjectIn, const GraphLinkContainer &containerIn)
|
||||
{
|
||||
using List = GraphLinkContainer::index<GraphLinkRecord::ByVPDObject>::type;
|
||||
const List &list = containerIn.get<GraphLinkRecord::ByVPDObject>();
|
||||
List::const_iterator it = list.find(VPDObjectIn);
|
||||
return it != list.end();
|
||||
}
|
||||
|
||||
const GraphLinkRecord& Gui::DAG::findRecord(Vertex vertexIn, const GraphLinkContainer &containerIn)
|
||||
{
|
||||
using List = GraphLinkContainer::index<GraphLinkRecord::ByVertex>::type;
|
||||
|
||||
@@ -284,6 +284,7 @@ namespace Gui
|
||||
>;
|
||||
|
||||
bool hasRecord(const App::DocumentObject* dObjectIn, const GraphLinkContainer &containerIn);
|
||||
bool hasRecord(const ViewProviderDocumentObject* VPDObjectIn, 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);
|
||||
|
||||
Reference in New Issue
Block a user