]> SALOME platform Git repositories - modules/gui.git/commitdiff
Salome HOME
refs #1324: only panning by button can be chained
authorasl <asl@opencascade.com>
Fri, 22 Sep 2017 08:34:54 +0000 (11:34 +0300)
committerasl <asl@opencascade.com>
Fri, 22 Sep 2017 08:34:54 +0000 (11:34 +0300)
src/OCCViewer/OCCViewer_ViewWindow.cxx
src/OCCViewer/OCCViewer_ViewWindow.h

index 45a9f37c01ba6474a32b5d1db62bd31269a7b9a9..cfeb79fb49f605a791e11bdaf7784d9edb151968 100644 (file)
@@ -276,6 +276,7 @@ OCCViewer_ViewWindow::OCCViewer_ViewWindow( SUIT_Desktop*     theDesktop,
   mySelectionEnabled = true;
 
   myCursorIsHand = false;
+  myPanningByBtn = false;
 
   clearViewAspects();
 }
@@ -625,6 +626,12 @@ void OCCViewer_ViewWindow::activateZoom()
 }
 
 
+void OCCViewer_ViewWindow::onPanning()
+{
+  myPanningByBtn = true;
+  activatePanning();
+}
+
 /*!
   \brief Start panning operation.
 
@@ -1072,7 +1079,7 @@ void OCCViewer_ViewWindow::vpMouseReleaseEvent(QMouseEvent* theEvent)
     {
       OCCViewer_ViewManager* aMgr = dynamic_cast<OCCViewer_ViewManager*>( getViewManager() );
       bool isChained = aMgr->isChainedOperations();
-      bool isReset = !( myOperation==PANVIEW && isChained ) || theEvent->button() == Qt::RightButton;
+      bool isReset = !( myOperation==PANVIEW && myPanningByBtn && isChained ) || theEvent->button() == Qt::RightButton;
       if( isReset )
         resetState();
       break;
@@ -1242,7 +1249,7 @@ void OCCViewer_ViewWindow::createActions()
   aAction = new QtxAction(tr("MNU_PAN_VIEW"), aResMgr->loadPixmap( "OCCViewer", tr( "ICON_OCCVIEWER_VIEW_PAN" ) ),
                            tr( "MNU_PAN_VIEW" ), 0, this);
   aAction->setStatusTip(tr("DSC_PAN_VIEW"));
-  connect(aAction, SIGNAL(triggered()), this, SLOT(activatePanning()));
+  connect(aAction, SIGNAL(triggered()), this, SLOT(onPanning()));
   toolMgr()->registerAction( aAction, PanId );
 
   // Global Panning
index e83fe217e196b2c0694af66308e5aafb0f0937d6..c68465fa5d0a8134e05df96995674f5232b452c1 100755 (executable)
@@ -308,6 +308,7 @@ public slots:
   virtual void onRayTracing();
   virtual void onEnvTexture();
   virtual void onLightSource();
+  virtual void onPanning();
 
   virtual void activateSetRotationGravity();
   virtual void activateSetRotationSelected( double theX, double theY, double theZ );
@@ -430,6 +431,7 @@ private:
   Handle(V3d_Plane) myReserveClipPlane;
 
   viewAspectList myViewAspects;
+  bool myPanningByBtn;
 };
 
 #ifdef WIN32