From 76ffafd7848f9512238192ad6cdb4836be00433d Mon Sep 17 00:00:00 2001 From: jrt Date: Thu, 11 Dec 2003 09:51:27 +0000 Subject: [PATCH] [Bug SMESH4598] Crash of the session when compute and update are not done in the same view. Bug fixed. --- src/SMESHGUI/SMESHGUI.cxx | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/SMESHGUI/SMESHGUI.cxx b/src/SMESHGUI/SMESHGUI.cxx index 529ede7b5..3d20ebe47 100644 --- a/src/SMESHGUI/SMESHGUI.cxx +++ b/src/SMESHGUI/SMESHGUI.cxx @@ -2202,7 +2202,7 @@ bool SMESHGUI::OnGUIEvent(int theCommandID, QAD_Desktop * parent) Standard_Boolean res; SMESH_Actor *ac = smeshGUI->FindActorByEntry(IObject->getEntry(), res, - true); + false); if (res) { smeshGUI->DisplayActor(ac, true); @@ -4152,6 +4152,11 @@ void SMESHGUI::BuildPresentation(const Handle(SALOME_InteractiveObject) & theIO) // The actor belongs to inactive view -> create a copy and display it in the active view if (!rwInter->isInViewer(IObject)) { + if(ac->GetMapper()==NULL) + { + SMESH::SMESH_Mesh_var aMesh = smeshGUI->ConvertIOinMesh(theIO, res); + ac=smeshGUI->ReadScript(aMesh); + } SMESH_Actor *acCopy = SMESH_Actor::New(); acCopy->ShallowCopy(ac); ac = acCopy; @@ -4200,7 +4205,7 @@ SMESH_Actor *SMESHGUI::ReadScript(SMESH::SMESH_Mesh_ptr aMesh) if (!aMesh->_is_nil()) { Standard_Boolean result; - MeshActor = FindActor(aMesh, result, true); + MeshActor = FindActor(aMesh, result, false); if (result) { SMESH::log_array_var aSeq = aMesh->GetLog(true); @@ -6052,15 +6057,15 @@ void SMESHGUI::Update(const Handle(SALOME_InteractiveObject) & IO) getActiveStudyFrame()->getRightFrame()->getViewFrame())-> getRWInteractor(); + ac = ReadScript(aMesh); // The actor belongs to inactive view -> create a copy and display it in the active view if (!rwInter->isInViewer(IO)) { SMESH_Actor *acCopy = SMESH_Actor::New(); acCopy->ShallowCopy(ac); - - smeshGUI->DisplayActor(acCopy, false); + ac=acCopy; } - ac = ReadScript(aMesh); + if (ac != NULL) { #ifdef TRACE