Fix deleting a Part

This commit is contained in:
Stefan Tröger
2017-08-06 08:59:21 +02:00
committed by wmayer
parent 5da7aed8e1
commit 7829849104
3 changed files with 10 additions and 3 deletions

View File

@@ -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<DocumentObject*> topoSortedObjects = topologicalSort();

View File

@@ -195,7 +195,7 @@ std::vector< DocumentObject* > OriginGroupExtension::addObjects(std::vector<Docu
bool OriginGroupExtension::hasObject(const DocumentObject* obj, bool recursive) const {
if(obj == getOrigin() || getOrigin()->hasObject(obj))
if(Origin.getValue() && (obj == getOrigin() || getOrigin()->hasObject(obj)))
return true;
return App::GroupExtension::hasObject(obj, recursive);

View File

@@ -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<App::OriginGroupExtension>();
@@ -135,6 +134,10 @@ void ViewProviderOriginGroupExtension::slotChangedObjectGui ( const Gui::ViewPro
}
void ViewProviderOriginGroupExtension::updateOriginSize () {
if(getExtendedViewProvider()->getObject()->isDeleting())
return;
auto* group = getExtendedViewProvider()->getObject()->getExtensionByType<App::OriginGroupExtension>();
if(!group)
return;