SIGSEGV after changing the Mesh in "Greate Group", then select elements. (Filter Volume, Geometry type is used)

This commit is contained in:
dmv 2009-11-16 15:03:12 +00:00
parent 7186694f11
commit 3ac780626e
2 changed files with 15 additions and 3 deletions

View File

@ -2632,7 +2632,13 @@ void SMESHGUI_FilterDlg::SetSourceWg (QWidget* theWg,
//======================================================================= //=======================================================================
void SMESHGUI_FilterDlg::SetMesh (SMESH::SMESH_Mesh_var theMesh) void SMESHGUI_FilterDlg::SetMesh (SMESH::SMESH_Mesh_var theMesh)
{ {
myMesh = theMesh; if ( !theMesh->_is_nil() ) {
myMesh = theMesh;
if ( !myFilter[ myTable->GetType() ]->_is_nil() && !myFilter[ myTable->GetType() ]->GetPredicate()->_is_nil() ) {
SMESH::Predicate_ptr aPred = myFilter[ myTable->GetType() ]->GetPredicate();
aPred->SetMesh(myMesh);
}
}
const bool isEnable = !(myMesh->_is_nil()); const bool isEnable = !(myMesh->_is_nil());
myButtons[BTN_OK]->setEnabled(isEnable); myButtons[BTN_OK]->setEnabled(isEnable);
myButtons[BTN_Apply]->setEnabled(isEnable); myButtons[BTN_Apply]->setEnabled(isEnable);

View File

@ -1062,6 +1062,10 @@ void SMESHGUI_GroupDlg::onObjectSelectionChanged()
myIsBusy = false; myIsBusy = false;
return; return;
} }
if ( myFilterDlg && !myMesh->_is_nil()){
myFilterDlg->SetMesh( myMesh );
}
myGroup = SMESH::SMESH_Group::_nil(); myGroup = SMESH::SMESH_Group::_nil();
// NPAL19389: create a group with a selection in another group // NPAL19389: create a group with a selection in another group
@ -1087,7 +1091,6 @@ void SMESHGUI_GroupDlg::onObjectSelectionChanged()
return; return;
} }
myIsBusy = false; myIsBusy = false;
myCurrentLineEdit = 0;
myGroup = SMESH::SMESH_Group::_nil(); myGroup = SMESH::SMESH_Group::_nil();
myGroupOnGeom = SMESH::SMESH_GroupOnGeom::_nil(); myGroupOnGeom = SMESH::SMESH_GroupOnGeom::_nil();
@ -1417,11 +1420,14 @@ void SMESHGUI_GroupDlg::setCurrentSelection()
QPushButton* send = (QPushButton*)sender(); QPushButton* send = (QPushButton*)sender();
myCurrentLineEdit = 0; myCurrentLineEdit = 0;
if (send == myMeshGroupBtn) { if (send == myMeshGroupBtn) {
myCurrentLineEdit = myMeshGroupLine; disconnect(myMeshGroupBtn, SIGNAL(clicked()), this, SLOT(setCurrentSelection()));
mySelectionMgr->clearSelected();
if (myCreate) if (myCreate)
setSelectionMode(6); setSelectionMode(6);
else else
setSelectionMode(5); setSelectionMode(5);
connect(myMeshGroupBtn, SIGNAL(clicked()), this, SLOT(setCurrentSelection()));
myCurrentLineEdit = myMeshGroupLine;
onObjectSelectionChanged(); onObjectSelectionChanged();
} }
else if (send == mySubMeshBtn) { else if (send == mySubMeshBtn) {