Ensure that GeoFeatureGroup claims children when a parent of it is deleted. fixes #0003150

This commit is contained in:
Stefan Tröger
2017-08-09 21:02:57 +02:00
committed by wmayer
parent 0053e939e9
commit 0439656133
2 changed files with 12 additions and 3 deletions

View File

@@ -2596,7 +2596,6 @@ void Document::remObject(const char* sName)
}
signalDeletedObject(*(pos->second));
pos->second->setStatus(ObjectStatus::Delete, false); // Unset the bit to be on the safe side
// do no transactions if we do a rollback!
if (!d->rollback && d->activeUndoTransaction) {
@@ -2651,6 +2650,8 @@ void Document::remObject(const char* sName)
// remove from adjancy list
//remove_vertex(_DepConMap[pos->second],_DepList);
//_DepConMap.erase(pos->second);
pos->second->setStatus(ObjectStatus::Delete, false); // Unset the bit to be on the safe side
d->objectMap.erase(pos);
}

View File

@@ -76,8 +76,16 @@ std::vector<App::DocumentObject*> ViewProviderGeoFeatureGroupExtension::extensio
std::vector<App::DocumentObject*> claim;
auto objs = ext->Group.getValues();
for(auto obj : objs) {
if(obj->getInList().size()<=1)
for(auto obj : objs) {
auto vin = obj->getInList();
//we don't want to count objects that are deleted
vin.erase(std::remove_if(vin.begin(), vin.end(), [](App::DocumentObject* obj)->bool {
return obj->isDeleting();
}), vin.end());
if(vin.size()<=1)
claim.push_back(obj);
}
return claim;