]> SALOME platform Git repositories - modules/gui.git/commitdiff
Salome HOME
Porting to Qt4.
authormkr <mkr@opencascade.com>
Tue, 29 May 2007 10:34:13 +0000 (10:34 +0000)
committermkr <mkr@opencascade.com>
Tue, 29 May 2007 10:34:13 +0000 (10:34 +0000)
src/OCCViewer/OCCViewer_ViewWindow.cxx
src/OCCViewer/OCCViewer_ViewWindow.h

index 935d4dc7809515d96605b7d6c57a3cb4519bafb4..4fe1ad85578c7540f831cbe13137c1e8ad0f87d6 100755 (executable)
@@ -189,6 +189,15 @@ OCCViewer_ViewWindow::OCCViewer_ViewWindow(SUIT_Desktop* theDesktop, OCCViewer_V
   updateEnabledDrawMode();
   myClippingDlg = 0;
   mySetRotationPointDlg = 0;
+  myRectBand = 0;
+}
+
+/*!
+  \brief Destructor.
+*/
+OCCViewer_ViewWindow::~OCCViewer_ViewWindow()
+{
+  endDrawRect();
 }
 
 /*!
@@ -754,6 +763,7 @@ void OCCViewer_ViewWindow::vpMouseReleaseEvent(QMouseEvent* theEvent)
   if ( theEvent->button() == Qt::LeftButton && myDrawRect ) {
     myDrawRect = false;
     drawRect();
+    endDrawRect();
     resetState(); 
     myViewPort->update();
   }
@@ -796,17 +806,26 @@ void OCCViewer_ViewWindow::resetState()
 */
 void OCCViewer_ViewWindow::drawRect()
 {
-  QRubberBand* aRB = new QRubberBand( QRubberBand::Rectangle, myViewPort );
+  if ( !myRectBand )
+    myRectBand = new QRubberBand( QRubberBand::Rectangle, myViewPort );
+  
   QRect aRect = SUIT_Tools::makeRect(myStartX, myStartY, myCurrX, myCurrY);
   if ( !myRect.isEmpty() ) {
-    aRB->setGeometry( myRect );
-    aRB->setVisible( myRect.isValid() );
+    myRectBand->setGeometry( myRect );
+    myRectBand->setVisible( myRect.isValid() );
   }
-  aRB->setGeometry( aRect );
-  aRB->setVisible( aRect.isValid() );
+  myRectBand->setGeometry( aRect );
+  myRectBand->setVisible( aRect.isValid() );
   myRect = aRect;
-  
-  delete aRB;
+}
+
+/*!
+  \brief Delete rubber band on the end on the dragging operation.
+*/
+void OCCViewer_ViewWindow::endDrawRect()
+{
+  delete myRectBand;
+  myRectBand = 0;
 }
 
 /*!
index 2d3d2aa3708d99f1b8698fed5adef7d435e014f3..86f4c7c42b4ab4597cf61a7074cba04ced317c05 100755 (executable)
@@ -27,6 +27,8 @@
 
 #include <QCursor>
 
+class QRubberBand;
+
 class SUIT_Desktop;
 class OCCViewer_ViewPort3d;
 
@@ -49,7 +51,7 @@ public:
   enum RotationPointType{ GRAVITY, SELECTED };
 
   OCCViewer_ViewWindow(SUIT_Desktop* theDesktop, OCCViewer_Viewer* theModel);
-       virtual ~OCCViewer_ViewWindow() {};
+  virtual ~OCCViewer_ViewWindow();
 
   OCCViewer_ViewPort3d* getViewPort() { return myViewPort; }
 
@@ -134,6 +136,7 @@ protected:
 
   void resetState();
   void drawRect();
+  void endDrawRect();
 
   void createActions();
   void createToolBar();
@@ -180,7 +183,8 @@ private:
 
   OCCViewer_SetRotationPointDlg* mySetRotationPointDlg;
   QtxAction* mySetRotationPointAction;
-  
+
+  QRubberBand* myRectBand; //!< selection rectangle rubber band
 };
 
 #ifdef WIN32