From 782984910470823acf70cd59eca0d95d751ed220 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20Tr=C3=B6ger?= Date: Sun, 6 Aug 2017 08:59:21 +0200 Subject: [PATCH] Fix deleting a Part --- src/App/Document.cpp | 4 ++++ src/App/OriginGroupExtension.cpp | 2 +- src/Gui/ViewProviderOriginGroupExtension.cpp | 7 +++++-- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/App/Document.cpp b/src/App/Document.cpp index 47cba1fd62..699c6e0446 100644 --- a/src/App/Document.cpp +++ b/src/App/Document.cpp @@ -2173,6 +2173,10 @@ int Document::recompute() delete LogEntry; _RecomputeLog.clear(); + //do we have anything to do? + if(d->objectMap.empty()) + return 0; + // get the sorted vector of all objects in the document and go though it from the end vector topoSortedObjects = topologicalSort(); diff --git a/src/App/OriginGroupExtension.cpp b/src/App/OriginGroupExtension.cpp index 6089597426..80b1dbf665 100644 --- a/src/App/OriginGroupExtension.cpp +++ b/src/App/OriginGroupExtension.cpp @@ -195,7 +195,7 @@ std::vector< DocumentObject* > OriginGroupExtension::addObjects(std::vectorhasObject(obj)) + if(Origin.getValue() && (obj == getOrigin() || getOrigin()->hasObject(obj))) return true; return App::GroupExtension::hasObject(obj, recursive); diff --git a/src/Gui/ViewProviderOriginGroupExtension.cpp b/src/Gui/ViewProviderOriginGroupExtension.cpp index 04e7cb2073..48a6609ac7 100644 --- a/src/Gui/ViewProviderOriginGroupExtension.cpp +++ b/src/Gui/ViewProviderOriginGroupExtension.cpp @@ -121,8 +121,7 @@ void ViewProviderOriginGroupExtension::slotChangedObjectApp ( const App::Documen } void ViewProviderOriginGroupExtension::slotChangedObjectGui ( const Gui::ViewProviderDocumentObject& vp) { - if ( !vp.hasExtension ( Gui::ViewProviderOrigin::getClassTypeId () ) && - !vp.isDerivedFrom ( Gui::ViewProviderOriginFeature::getClassTypeId () ) ) { + if ( !vp.isDerivedFrom ( Gui::ViewProviderOriginFeature::getClassTypeId () )) { // Ignore origins to avoid infinite recursion (not likely in a well-formed focument, // but may happen in documents designed in old versions of assembly branch ) auto* group = getExtendedViewProvider()->getObject()->getExtensionByType(); @@ -135,6 +134,10 @@ void ViewProviderOriginGroupExtension::slotChangedObjectGui ( const Gui::ViewPro } void ViewProviderOriginGroupExtension::updateOriginSize () { + + if(getExtendedViewProvider()->getObject()->isDeleting()) + return; + auto* group = getExtendedViewProvider()->getObject()->getExtensionByType(); if(!group) return;