0031102: Visualization, AIS_ViewController - AIS_DragAction_Stop is never emitted...
authorkgv <kgv@opencascade.com>
Thu, 24 Oct 2019 10:44:49 +0000 (13:44 +0300)
committerapn <apn@opencascade.com>
Sat, 26 Oct 2019 21:43:05 +0000 (00:43 +0300)
AIS_ViewController::UpdateMousePosition() now sets myMouseStopDragOnUnclick flag
to emit AIS_DragAction_Stop on mouse unclick.

src/AIS/AIS_ViewController.cxx
src/AIS/AIS_ViewController.hxx

index 0e2ce3a..cc50aa9 100644 (file)
@@ -69,6 +69,7 @@ AIS_ViewController::AIS_ViewController()
   myMousePressed        (Aspect_VKeyMouse_NONE),
   myMouseModifiers      (Aspect_VKeyFlags_NONE),
   myMouseSingleButton   (-1),
+  myMouseStopDragOnUnclick (false),
   //
   myTouchToleranceScale      (1.0f),
   myTouchRotationThresholdPx (6.0f),
@@ -611,6 +612,7 @@ bool AIS_ViewController::UpdateMouseButtons (const Graphic3d_Vec2i& thePoint,
     {
       myMouseClickTimer.Stop();
       myMouseClickCounter = 0;
+      myMouseStopDragOnUnclick = false;
       myUI.Dragging.ToStop = true;
       toUpdateView = true;
     }
@@ -619,6 +621,12 @@ bool AIS_ViewController::UpdateMouseButtons (const Graphic3d_Vec2i& thePoint,
   else if (theButtons == Aspect_VKeyMouse_NONE)
   {
     myMouseSingleButton = -1;
+    if (myMouseStopDragOnUnclick)
+    {
+      myMouseStopDragOnUnclick = false;
+      myUI.Dragging.ToStop = true;
+      toUpdateView = true;
+    }
   }
   else if (myMouseSingleButton == -1)
   {
@@ -769,6 +777,7 @@ bool AIS_ViewController::UpdateMousePosition (const Graphic3d_Vec2i& thePoint,
       myMouseClickTimer.Stop();
       myMouseClickCounter = 0;
       myMouseSingleButton = -1;
+      myMouseStopDragOnUnclick = true;
     }
   }
 
index 7c566b2..3adca90 100644 (file)
@@ -647,6 +647,7 @@ protected: //! @name mouse input variables
   Aspect_VKeyMouse    myMousePressed;             //!< active mouse buttons
   Aspect_VKeyFlags    myMouseModifiers;           //!< active key modifiers passed with last mouse event
   Standard_Integer    myMouseSingleButton;        //!< index of mouse button pressed alone (>0)
+  Standard_Boolean    myMouseStopDragOnUnclick;   //!< queue stop dragging even with at next mouse unclick
 
 protected: //! @name multi-touch input variables