Salome HOME
Moved some functionality to VTKViewer_Utilities.h
[modules/kernel.git] / src / SALOMEGUI / QAD_WaitCursor.h
index 3d33a2f7083ea8728bc87de3e7a8887b27aeb72d..2f5dbe6d9384debead621c123f063834be439f57 100644 (file)
 class QAD_EXPORT QAD_WaitCursor {
  public:
 // constructor
-     QAD_WaitCursor() : myStarted(false) { start(); }
+     QAD_WaitCursor() : myStarted( false ), myDepth( 1 ) { start(); }
 // destructor
-     ~QAD_WaitCursor()   { stop();  }
+     ~QAD_WaitCursor()   { if ( !myStarted ) { myDepth--; start(); } else { QApplication::restoreOverrideCursor(); } }
 
 // sets WAIT cursor if not set yet
-     void    start()     { if (!myStarted) { QApplication::setOverrideCursor(Qt::waitCursor); myStarted = true; } }
+     void    start()     { if ( !myStarted ) { while( myDepth-- ) QApplication::setOverrideCursor( Qt::waitCursor ); myStarted = true; } myDepth = 0; }
 // clears WAIT cursor if set
-     void    stop()      { if (myStarted)  { QApplication::restoreOverrideCursor(); myStarted = false; } } 
+     void    stop()      { if ( myStarted )  { while( QApplication::overrideCursor() ) { QApplication::restoreOverrideCursor(); myDepth++; } myStarted = false; } } 
 // returns true if WAIT cursor is active
      bool    isStarted() { return myStarted; }
 
  private:
      bool  myStarted;
+     int   myDepth;
 };
 
 #endif