mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2024-12-26 17:30:35 +05:00
SALOME Forum bug: sub-mesh removal leads to an Exception in a re-opened study.
Now UnRegister(), corresponding to the Register() called by AttributeIOR, is invoked by an object publisher i.e. by SMESH_Gen_i::publish() but not by GUI because GUI is unable to track publication of all objects created by the Engine: for example groups can be created while mesh.Compute() is called.
This commit is contained in:
parent
5b15666f93
commit
74d40c014d
@ -260,7 +260,7 @@ static SALOMEDS::SObject_ptr publish(SALOMEDS::Study_ptr theStudy,
|
||||
const bool theSelectable = true)
|
||||
{
|
||||
SALOMEDS::SObject_wrap SO = SMESH_Gen_i::ObjectToSObject( theStudy, theIOR );
|
||||
SALOMEDS::StudyBuilder_var aStudyBuilder = theStudy->NewBuilder();
|
||||
SALOMEDS::StudyBuilder_var aStudyBuilder = theStudy->NewBuilder();
|
||||
SALOMEDS::UseCaseBuilder_var useCaseBuilder = theStudy->GetUseCaseBuilder();
|
||||
if ( SO->_is_nil() ) {
|
||||
if ( theTag == 0 )
|
||||
@ -275,6 +275,10 @@ static SALOMEDS::SObject_ptr publish(SALOMEDS::Study_ptr theStudy,
|
||||
CORBA::String_var objStr = SMESH_Gen_i::GetORB()->object_to_string( theIOR );
|
||||
SALOMEDS::AttributeIOR_wrap iorAttr = anAttr;
|
||||
iorAttr->SetValue( objStr.in() );
|
||||
// UnRegister() !!!
|
||||
SALOME::GenericObj_var genObj = SALOME::GenericObj::_narrow( theIOR );
|
||||
if ( !genObj->_is_nil() )
|
||||
genObj->UnRegister();
|
||||
}
|
||||
if ( thePixMap ) {
|
||||
anAttr = aStudyBuilder->FindOrCreateAttribute( SO, "AttributePixMap" );
|
||||
@ -1179,7 +1183,7 @@ char* SMESH_Gen_i::GetParameters(CORBA::Object_ptr theObject)
|
||||
{
|
||||
CORBA::String_var aResult("");
|
||||
|
||||
SALOMEDS::SObject_wrap aSObj = ObjectToSObject( myCurrentStudy,theObject);
|
||||
SALOMEDS::SObject_wrap aSObj = ObjectToSObject( myCurrentStudy, theObject );
|
||||
if ( !aSObj->_is_nil() )
|
||||
{
|
||||
SALOMEDS::GenericAttribute_wrap attr;
|
||||
@ -1189,6 +1193,5 @@ char* SMESH_Gen_i::GetParameters(CORBA::Object_ptr theObject)
|
||||
aResult = strAttr->Value();
|
||||
}
|
||||
}
|
||||
|
||||
return CORBA::string_dup( aResult.in() );
|
||||
return aResult._retn();
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user