Salome HOME
0021543: EDF 1978 SMESH: Viscous layer for 2D meshes
[modules/smesh.git] / src / SMESHGUI / SMESHGUI_FindElemByPointDlg.cxx
index 42d51513b3215582ea560a0925653f0b97307d1b..3936eea86d8c23acaecca085a4b54acba4041e39 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2011  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2012  CEA/DEN, EDF R&D, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -19,8 +19,9 @@
 
 // File   : SMESHGUI_FindElemByPointDlg.cxx
 // Author : Edward AGAPOV, Open CASCADE S.A.S.
-// SMESH includes
 //
+
+// SMESH includes
 #include "SMESHGUI_FindElemByPointDlg.h"
 
 #include "SMESHGUI.h"
@@ -124,6 +125,10 @@ void SMESHGUI_FindElemByPointDlg::setTypes(SMESH::array_of_ElementType_var & typ
       myElemTypeCombo->addItem( tr( "MEN_ELEM0D" ));
       myElemTypeCombo->setId( nbTypes++, int( SMESH::ELEM0D  ));
       break;
+    case SMESH::BALL:
+      myElemTypeCombo->addItem( tr( "MEN_BALL" ));
+      myElemTypeCombo->setId( nbTypes++, int( SMESH::BALL  ));
+      break;
     default:;
     }
   }
@@ -237,8 +242,8 @@ SMESHGUI_FindElemByPointOp::SMESHGUI_FindElemByPointOp()
   myHelpFileName = "find_element_by_point_page.html";
 
   QList<SUIT_SelectionFilter*> filters;
-  filters.append( new SMESH_TypeFilter( MESH ) );
-  filters.append( new SMESH_TypeFilter( GROUP ) );
+  filters.append( new SMESH_TypeFilter( SMESH::MESH ) );
+  filters.append( new SMESH_TypeFilter( SMESH::GROUP ) );
   myFilter = new SMESH_LogicalFilter( filters, SMESH_LogicalFilter::LO_OR );
 
   myPreview = new SMESH::MeshPreviewStruct();
@@ -453,9 +458,6 @@ void SMESHGUI_FindElemByPointOp::onSelectionDone()
   if ( !myMeshIO.IsNull() && myMeshIO->hasEntry() )
     oldMeshEntry = myMeshIO->getEntry();
 
-  myDlg->myMeshName->setText("");
-  myMeshIO.Nullify();
-
   try {
     SALOME_ListIO aList;
     selectionMgr()->selectedObjects(aList, SVTK_Viewer::Type());
@@ -464,12 +466,16 @@ void SMESHGUI_FindElemByPointOp::onSelectionDone()
       Handle(SALOME_InteractiveObject) anIO = aList.First();
       _PTR(SObject) pObj = studyDS()->FindObjectID(anIO->getEntry());
       CORBA::Object_var anObj = SMESH::IObjectToObject( anIO );
-      myMeshOrPart = SMESH::SMESH_IDSource::_narrow(anObj);
-      if ( pObj && !myMeshOrPart->_is_nil() )
+      newMeshEntry = anIO->getEntry();
+      SMESH::SMESH_IDSource_var aMeshOrPart = SMESH::SMESH_IDSource::_narrow(anObj);
+      if ( pObj && !aMeshOrPart->_is_nil() && oldMeshEntry != newMeshEntry )
       {
+        myMeshOrPart = aMeshOrPart;
+        myMeshIO.Nullify();
         myMeshIO = anIO;
-        myDlg->myMeshName->setText( pObj->GetName().c_str() );
-        newMeshEntry = anIO->getEntry();
+        std::string name = pObj->GetName();
+        myDlg->myMeshName->setText("");
+        myDlg->myMeshName->setText( QString( name.c_str() ).trimmed() );
         SMESH::array_of_ElementType_var  types = myMeshOrPart->GetTypes();
         myDlg->setTypes( types );
       }