Salome HOME
IPAL20918 Color of Group of Nodes or Edges is not changed when Edit Group
[modules/smesh.git] / src / SMESHGUI / SMESHGUI_GroupDlg.cxx
index 352215c957923d3e79eb4e02e221b14b9abd0033..5b3b5e22c9822d9cc0d3e6115fbc62be1b972cc6 100644 (file)
@@ -797,8 +797,14 @@ bool SMESHGUI_GroupDlg::onApply()
       myGroup->SetColor(aColor);
 
       _PTR(SObject) aMeshGroupSO = SMESH::FindSObject(myGroup);
-      if(SMESH_Actor *anActor = SMESH::FindActorByEntry(aMeshGroupSO->GetID().c_str()))
-       anActor->SetSufaceColor( aColor.R, aColor.G, aColor.B );
+      if(SMESH_Actor *anActor = SMESH::FindActorByEntry(aMeshGroupSO->GetID().c_str())) {
+       switch ( myTypeId ) {
+       case 0: anActor->SetNodeColor( aColor.R, aColor.G, aColor.B ); break;
+       case 1: anActor->SetEdgeColor( aColor.R, aColor.G, aColor.B ); break;
+       case 2:
+       case 3: anActor->SetSufaceColor( aColor.R, aColor.G, aColor.B ); break;
+       }
+      }
 
       QList<int> aAddList;
 
@@ -928,8 +934,14 @@ bool SMESHGUI_GroupDlg::onApply()
       myGroupOnGeom->SetColor(aColor);
 
       _PTR(SObject) aMeshGroupSO = SMESH::FindSObject(myGroupOnGeom);
-      if(SMESH_Actor *anActor = SMESH::FindActorByEntry(aMeshGroupSO->GetID().c_str()))
-       anActor->SetSufaceColor( aColor.R, aColor.G, aColor.B );
+      if(SMESH_Actor *anActor = SMESH::FindActorByEntry(aMeshGroupSO->GetID().c_str())) {
+       switch ( myTypeId ) {
+       case 0: anActor->SetNodeColor( aColor.R, aColor.G, aColor.B ); break;
+       case 1: anActor->SetEdgeColor( aColor.R, aColor.G, aColor.B ); break;
+       case 2:
+       case 3: anActor->SetSufaceColor( aColor.R, aColor.G, aColor.B ); break;
+       }
+      }
     }
 
     mySMESHGUI->updateObjBrowser(true);
@@ -1395,6 +1407,13 @@ void SMESHGUI_GroupDlg::setCurrentSelection()
 //=================================================================================
 void SMESHGUI_GroupDlg::setFilters()
 {
+  if(myMesh->_is_nil()) {
+    SUIT_MessageBox::critical(this,
+                             tr("SMESH_ERROR"),
+                             tr("NO_MESH_SELECTED"));
+   return;
+  }
+
   SMESH::ElementType aType = SMESH::ALL;
   switch ( myTypeId )
   {
@@ -1415,7 +1434,7 @@ void SMESHGUI_GroupDlg::setFilters()
 
   myFilterDlg->SetSelection();
   myFilterDlg->SetMesh( myMesh );
-  myFilterDlg->SetSourceWg( myElements );
+  myFilterDlg->SetSourceWg( myElements, false );
 
   myFilterDlg->show();
 }