]> SALOME platform Git repositories - modules/visu.git/commitdiff
Salome HOME
To check ColoredPrs3dHolder on _non_existent before its handling
authorapo <apo@opencascade.com>
Thu, 30 Nov 2006 13:45:27 +0000 (13:45 +0000)
committerapo <apo@opencascade.com>
Thu, 30 Nov 2006 13:45:27 +0000 (13:45 +0000)
src/VISUGUI/VisuGUI_Slider.cxx
src/VISUGUI/VisuGUI_Slider.h

index 32e1f3e8fe60a2879d15075873fc898dada915d7..068783ea38e2c49ae6a95d7bbb7277e5396cde77 100644 (file)
@@ -229,12 +229,26 @@ VisuGUI_Slider::~VisuGUI_Slider()
 {
 }
 
+bool VisuGUI_Slider::checkHolderList()
+{
+  THolderList aHolderList;
+  THolderList::const_iterator anIter = myHolderList.begin();
+  THolderList::const_iterator anIterEnd = myHolderList.end();
+  for(; anIter != anIterEnd; anIter++){
+    VISU::ColoredPrs3dHolder_var aHolder = *anIter;
+    if(!aHolder->_non_existent())
+      aHolderList.push_back(aHolder);
+  }
+  myHolderList.swap(aHolderList);
+  return myHolderList.empty();
+}
+
 void VisuGUI_Slider::enableControls( bool on )
 {
   widget()->setEnabled( on );
   if( on )
   {
-    if( myHolderList.empty() )
+    if( checkHolderList() )
       return;
 
     myTimeStampStrings->clear();
@@ -288,7 +302,7 @@ void VisuGUI_Slider::enableControls( bool on )
 
 void VisuGUI_Slider::updateMemoryState()
 {
-  if( myHolderList.empty() )
+  if( checkHolderList() )
     return;
 
   VISU::ColoredPrs3dHolder_var aHolder = myHolderList.front();
@@ -337,7 +351,7 @@ void VisuGUI_Slider::onSelectionChanged()
     }
   }
 
-  enableControls( !myHolderList.empty() );
+  enableControls( !checkHolderList() );
   updateMemoryState();
 }
 
@@ -396,8 +410,10 @@ void VisuGUI_Slider::onLast()
 
 void VisuGUI_Slider::onValueChanged( int value )
 {
-  if( myHolderList.empty() )
+  if( checkHolderList() ){
+    enableControls( false );
     return;
+  }
 
   VISU::ColoredPrs3dHolder_var aHolder = myHolderList.front();
 
index a15037c11bb853e9d1ec123aa1683f6b56ac8efd..652236ea32c0cea4b7d6c13f0dfe3059cd53ff30 100644 (file)
@@ -85,6 +85,7 @@ public slots:
 protected:
   virtual void     enableControls( bool );
   virtual void     updateMemoryState();
+  virtual bool     checkHolderList();
 
 private:
   VisuGUI_Module*  myModule;