]> SALOME platform Git repositories - modules/visu.git/commitdiff
Salome HOME
Fix for Bug VISU200819961
authorapo <apo@opencascade.com>
Mon, 23 Jun 2008 15:44:15 +0000 (15:44 +0000)
committerapo <apo@opencascade.com>
Mon, 23 Jun 2008 15:44:15 +0000 (15:44 +0000)
 - Sweep functionality doesn?t operate with Gauss Points presentation.

src/VISUGUI/VisuGUI.cxx
src/VISUGUI/VisuGUI_Sweep.cxx

index dc89ef24b2fc71d14afee2b2afa0829e4421c19b..bbe027eb5a8a04fde92db4cbd9840145b9847dd8 100644 (file)
@@ -2582,9 +2582,10 @@ VisuGUI
   
   // Rules
 
-  QString aPrsAll ("'VISU::TSCALARMAP' 'VISU::TISOSURFACES' 'VISU::TDEFORMEDSHAPE' 'VISU::TCUTPLANES' "
-                   "'VISU::TCUTLINES' 'VISU::TVECTORS' 'VISU::TSTREAMLINES' 'VISU::TPLOT3D' "
-                  "'VISU::TSCALARMAPONDEFORMEDSHAPE' 'VISU::TCOLOREDPRS3DHOLDER'");
+  QString aSimplePrsAll ("'VISU::TSCALARMAP' 'VISU::TISOSURFACES' 'VISU::TDEFORMEDSHAPE' 'VISU::TCUTPLANES' "
+                        "'VISU::TCUTLINES' 'VISU::TVECTORS' 'VISU::TSTREAMLINES' 'VISU::TPLOT3D' "
+                        "'VISU::TSCALARMAPONDEFORMEDSHAPE'");
+  QString aPrsAll = aSimplePrsAll + " 'VISU::TCOLOREDPRS3DHOLDER'";
 
   // VISU root commands
   QString aRule = "client='ObjectBrowser' and selcount=1 and type='VISU::TVISUGEN'";
@@ -2728,7 +2729,7 @@ VisuGUI
   aRule = "selcount=1 and type='VISU::TCUTLINES' and nbNamedChildren=0";
   mgr->setRule( action( VISU_CREATE_TABLE ), aRule );
 
-  aRule = "selcount=1 and ($type in {" + aPrsAll + "})";
+  aRule = "selcount=1 and ($type in {" + aSimplePrsAll + "})";
   mgr->setRule( action( VISU_SWEEP ), aRule );
 
   // "Selection info" popup item
index addd388994e9417ae9e5ad83e08b32458090feaa..73b5fe654dce3a3f184bcf50e3cc217c1b2894c6 100644 (file)
@@ -296,17 +296,17 @@ namespace
   struct TEnabler
   {
     VisuGUI_Sweep* myWidget;
-    VISU_Actor*& myActor;
+    bool& myIsValidSelection;
 
-    TEnabler( VisuGUI_Sweep* theWidget, VISU_Actor*& theActor )
+    TEnabler( VisuGUI_Sweep* theWidget, bool& theIsValidSelection )
       : myWidget( theWidget )
-      , myActor( theActor )
+      , myIsValidSelection( theIsValidSelection )
     {}
     
     ~TEnabler()
     {
-      myWidget->setEnabled( myActor );
-      myWidget->onStop( !myActor );
+      myWidget->setEnabled( myIsValidSelection );
+      myWidget->onStop( !myIsValidSelection );
     }
   };
 }
@@ -319,19 +319,22 @@ void VisuGUI_Sweep::onSelectionChanged()
   VISU::Prs3d_i* aPrs3d = NULL;
   SVTK_ViewWindow* aViewWindow = NULL;
 
-  TEnabler anEnabler( this, anActor );
+  bool anIsValidSelection = VISU::GetPrs3dSelectionInfo( myModule, aPrs3d, aViewWindow, anActor );
 
-  if( !VISU::GetPrs3dSelectionInfo( myModule, aPrs3d, aViewWindow, anActor ) )
+  TEnabler anEnabler( this, anIsValidSelection );
+
+  if ( !anIsValidSelection )
     return;
 
-  if ( anActor == myActor )
+  if ( myActor.GetPointer() == anActor )
     return;
 
   VISU::ScalarMap_i* aScalarMap = dynamic_cast< VISU::ScalarMap_i* >( aPrs3d );
-  if ( !aScalarMap )
+  anIsValidSelection &= ( aScalarMap && aScalarMap->IsTimeStampFixed() );
+  if ( !anIsValidSelection )
     return;
 
-  if ( myActor ) {
+  if ( myActor.GetPointer() ) {
     myScalarMap->SetMapScale( 1.0 );
     myScalarMap->UpdateActor( myActor );
     myViewWindow->Repaint();