X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FFeaturesPlugin%2FFeaturesPlugin_Recover.cpp;h=59a2526ca7b1c359250c4ba782151abf9ec607cf;hb=982481c856def9c064e5f2bb65de11a5b254da6e;hp=5bdff264fcb0f19c7ac866d3bea76509edbecc81;hpb=0cf033e3d2d9a6419aac40d77cd200187562a159;p=modules%2Fshaper.git diff --git a/src/FeaturesPlugin/FeaturesPlugin_Recover.cpp b/src/FeaturesPlugin/FeaturesPlugin_Recover.cpp index 5bdff264f..59a2526ca 100644 --- a/src/FeaturesPlugin/FeaturesPlugin_Recover.cpp +++ b/src/FeaturesPlugin/FeaturesPlugin_Recover.cpp @@ -29,9 +29,6 @@ void FeaturesPlugin_Recover::initAttributes() data()->addAttribute(PERSISTENT(), ModelAPI_AttributeBoolean::typeId()); myPersistent = boolean(PERSISTENT())->value(); - // temporary modification for empty list - // ModelAPI_Session::get()->validators()->registerNotObligatory(getKind(), RECOVERED_ENTITIES()); - synchronizeRegistered(); } @@ -49,7 +46,7 @@ void FeaturesPlugin_Recover::synchronizeRegistered() { FeaturePtr aBase = baseFeature(); bool aNewPersistent = boolean(PERSISTENT())->value(); - if (aNewPersistent != myPersistent) + if (aNewPersistent != myPersistent || myCurrentBase != aBase) clearRegistered(); std::set aRecoveredInList; @@ -62,9 +59,11 @@ void FeaturesPlugin_Recover::synchronizeRegistered() if (myRegistered.find(anObj) == myRegistered.end()) { // not found, so register a new ResultPtr aRes = std::dynamic_pointer_cast(anObj); - ModelAPI_Session::get()->validators()->registerUnconcealment( - aRes, aNewPersistent ? FeaturePtr() : aBase); - myRegistered.insert(anObj); + if (aRes.get()) { // this may be on first update after "open" + ModelAPI_Session::get()->validators()->registerUnconcealment( + aRes, aNewPersistent ? FeaturePtr() : aBase); + myRegistered.insert(anObj); + } } } }