Salome HOME
portage V8_5_0
[modules/hydro.git] / src / HYDROGUI / HYDROGUI_OCCDisplayer.cxx
index a52182d5abff1ac25343418a3599daaf4eb5cf14..de674e8b413e1688fcd0962af2b346c3449ba316 100644 (file)
@@ -325,6 +325,7 @@ void HYDROGUI_OCCDisplayer::purgeObjects( const int theViewerId )
     if ( !anOwnerObj.IsNull() && anOwnerObj->IsRemoved() )
       module()->removeObjectShape( (size_t)aViewer, anOwnerObj );
   }
+  UpdateColorScale( aViewer );
 }
 
 QString HYDROGUI_OCCDisplayer::GetType() const
@@ -420,14 +421,33 @@ void HYDROGUI_OCCDisplayer::UpdateColorScale( const OCCViewer_Viewer* theViewer
   OCCViewer_ViewWindow* aWnd = dynamic_cast<OCCViewer_ViewWindow*>( theViewer->getViewManager()->getActiveView() );
   Handle(V3d_View) aView = aWnd->getViewPort()->getView();
       
+
+  HYDROGUI_Module* aModule = module();
   int aViewerId = (size_t)theViewer;//TODO: check if viewer id is correct
-  bool isLandCoverColoringOn = module()->isLandCoversScalarMapModeOn( aViewerId );
+  bool isLandCoverColoringOn = aModule->isLandCoversScalarMapModeOn( aViewerId );
     
-  QList<HYDROGUI_Shape*> aLandCoverMapShapes = module()->getObjectShapes( aViewerId, KIND_LAND_COVER_MAP );
-  QList<HYDROGUI_Shape*> aBathShapes = module()->getObjectShapes( aViewerId, KIND_BATHYMETRY );
-
-  bool isDisplayColorScale = !aBathShapes.empty() || isLandCoverColoringOn;
+  QList<HYDROGUI_Shape*> aLandCoverMapShapes = aModule->getObjectShapes( aViewerId, KIND_LAND_COVER_MAP );
+  QList<HYDROGUI_Shape*> aBathShapes = aModule->getObjectShapes( aViewerId, KIND_BATHYMETRY );
 
+  bool isDisplayColorScale = false;
+  foreach (HYDROGUI_Shape* shape, aLandCoverMapShapes)
+  {
+    if (aModule->isObjectVisible(aViewerId, shape->getObject()))
+    {
+      isDisplayColorScale = true;
+      break;
+    }
+  }
+  if (!isDisplayColorScale)
+    foreach (HYDROGUI_Shape* shape, aBathShapes)
+    {
+      if (aModule->isObjectVisible(aViewerId, shape->getObject()))
+      {
+        isDisplayColorScale = true;
+        break;
+      }
+    }
+  
   Standard_Real aColorScaleMin = 0, aColorScaleMax = 1;
 
   // Get range