+
+void SALOMEDS_SObject_i::OnRemove()
+{
+ Handle(TDF_Reference) aReference;
+ if(_lab.FindAttribute(TDF_Reference::GetID(),aReference)){
+ Handle(SALOMEDS_TargetAttribute) aTarget;
+ if(aReference->Get().FindAttribute(SALOMEDS_TargetAttribute::GetID(),aTarget))
+ aTarget->Remove(_lab);
+ }
+
+ Handle(SALOMEDS_IORAttribute) anAttr; // postponed removing of CORBA objects
+ if(_lab.FindAttribute(SALOMEDS_IORAttribute::GetID(),anAttr)){
+ _study->AddPostponed(TCollection_AsciiString(anAttr->Get()).ToCString());
+ }
+
+ myAttrMap.clear();
+
+ SALOMEDS_Study_i::TSObjectMap& anSObjectMap = _study->GetSObjectMap();
+ anSObjectMap.erase(_lab);
+}