Ensure that GeoFeatureGroup claims children when a parent of it is deleted. fixes #0003150
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user