Salome HOME
Copyright update 2022
[modules/smesh.git] / src / SMESHGUI / SMESHGUI_MeshOrderOp.cxx
index 96caaa5810ccf2571157248e908a3d0ec7da17e1..2fc7fb865850c58ceffc35e34b28f37daa58d1af 100644 (file)
@@ -1,9 +1,9 @@
-// Copyright (C) 2007-2013  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2022  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
 // License as published by the Free Software Foundation; either
-// version 2.1 of the License.
+// version 2.1 of the License, or (at your option) any later version.
 //
 // This library is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -24,6 +24,7 @@
 
 #include "SMESHGUI.h"
 #include "SMESHGUI_Utils.h"
+#include "SMESHGUI_VTKUtils.h"
 #include "SMESHGUI_MeshUtils.h"
 
 // SALOME GUI includes
@@ -52,7 +53,7 @@ SMESHGUI_MeshOrderOp::SMESHGUI_MeshOrderOp()
 {
   myDlg = new SMESHGUI_MeshOrderDlg( desktop() );
   
-  myHelpFileName = "constructing_meshes_page.html#mesh_order_anchor";
+  myHelpFileName = "constructing_meshes.html#submesh-order-anchor";
 }
 
 //================================================================================
@@ -139,7 +140,10 @@ bool SMESHGUI_MeshOrderOp::onApply()
   bool res = myMgr ? myMgr->SetMeshOrder() : false;
 
   if( res )
+  {
     SMESHGUI::Modified();
+    SMESH::UpdateView();
+  }
 
   delete myMgr;
   myMgr = 0;
@@ -199,7 +203,7 @@ void SMESHGUI_MeshOrderMgr::SetMesh(SMESH::SMESH_Mesh_var& theMesh)
 
 //================================================================================
 /*!
- * \brief Check for concurents between submesh objects
+ * \brief Check for concurrents between submesh objects
  */
 //================================================================================
 
@@ -211,7 +215,7 @@ bool SMESHGUI_MeshOrderMgr::GetMeshOrder()
 
 //================================================================================
 /*!
- * \brief Check for concurents between submesh objects
+ * \brief Check for concurrents between submesh objects
  */
 //================================================================================
 
@@ -280,7 +284,7 @@ bool SMESHGUI_MeshOrderMgr::SetMeshOrder( const  ListListId& theListListIds )
   if (theListListIds.isEmpty() || myMesh->_is_nil())
     return false;
 
-  _PTR(Study) aStudy = SMESH::GetActiveStudyDocument();
+  _PTR(Study) aStudy = SMESH::getStudy();
   _PTR(SObject) aMeshSObj = SMESH::FindSObject(myMesh);
   if ( !aStudy || !aMeshSObj )
     return false;
@@ -295,15 +299,11 @@ bool SMESHGUI_MeshOrderMgr::SetMeshOrder( const  ListListId& theListListIds )
       _PTR(SObject) aSmObj = smIter->Value();
       SMESH::SMESH_subMesh_var sm =
         SMESH::SObjectToInterface<SMESH::SMESH_subMesh>( aSmObj );
-      mapOfSubMesh[ sm->GetId() ] = SMESH::SMESH_subMesh::_duplicate(sm);
+      if ( !sm->_is_nil() )
+        mapOfSubMesh[ sm->GetId() ] = SMESH::SMESH_subMesh::_duplicate(sm);
     }
   }
 
-  // is it enought to set modifid attribute on root mesh objects only?
-  //  it is seems that modifaction flag will be set on child submeshes 
-  //  automatically  (see SMESH::ModifiedMesh for details)
-  SMESH::ModifiedMesh( aMeshSObj, false, false );
-
   SMESH::submesh_array_array_var meshOrder = new SMESH::submesh_array_array();
   meshOrder->length(theListListIds.count() );
   ListListId::const_iterator it = theListListIds.constBegin();