Salome HOME
INT PAL 0052786: <None> 2D algorithm shown when mesh edition invoked
authorimn <imn@opencascade.com>
Mon, 29 Jun 2015 16:34:27 +0000 (19:34 +0300)
committerimn <imn@opencascade.com>
Mon, 29 Jun 2015 16:34:27 +0000 (19:34 +0300)
src/SMESHGUI/SMESHGUI_MeshOp.cxx

index ff98510088ead389874ccd87465f2a6b73ff0816..53e1ea98e459560e02a7b8f1ce05c62b23ae8c80 100644 (file)
@@ -1496,24 +1496,32 @@ void SMESHGUI_MeshOp::onAlgoSelected( const int theIndex,
       if ( anAvailable.count() == 1 )
         soleCompatible = myAvailableHypData[dim][Algo][0];
       if ( dim == aTopDim && prevAlgo ) {// all available algoritms should be selectable any way
-        if (aTopDim == SMESH::DIM_2D) {
+        if (aTopDim == SMESH::DIM_2D && myFilteredAlgoData[dim].count() > 0) {
           anAvailable.clear();
           for (int i = 0; i < myFilteredAlgoData[dim].count(); ++i) {
             HypothesisData* aCurAlgo = myFilteredAlgoData[dim][ i ];
             anAvailable.append( aCurAlgo->Label );
           }
         }
-        if (aTopDim == SMESH::DIM_3D)
+        if (aTopDim == SMESH::DIM_3D && myDlg->currentMeshType() == MT_ANY)
           availableHyps( dim, Algo, anAvailable, myAvailableHypData[dim][Algo], 0 );
       }
       myDlg->tab( dim )->setAvailableHyps( Algo, anAvailable );
       noCompatible = anAvailable.isEmpty();
 
       // restore previously selected algo
-      if (dim == aTopDim && prevAlgo && aTopDim == SMESH::DIM_2D)
+      if (dim == aTopDim && prevAlgo && aTopDim == SMESH::DIM_2D && myFilteredAlgoData[dim].count() > 0) {
         algoIndex = myFilteredAlgoData[dim].indexOf( curAlgo );
-      else
+        setCurrentHyp( dim, Algo, algoIndex);
+        if (algoIndex >= 0)
+          prevAlgo = algoByDim[ dim ] = myFilteredAlgoData[dim][algoIndex];
+        else
+          prevAlgo = algoByDim[ dim ] = 0;
+        continue;
+      }
+      else {
         algoIndex = myAvailableHypData[dim][Algo].indexOf( curAlgo );
+      }
       if ( !isSubmesh && algoIndex < 0 && soleCompatible && !forward && dim != SMESH::DIM_0D)
         // select the sole compatible algo
         algoIndex = myAvailableHypData[dim][Algo].indexOf( soleCompatible );