diff --git a/src/AIS/AIS_ViewController.cxx b/src/AIS/AIS_ViewController.cxx index 0e2ce3a0a9..cc50aa91ba 100644 --- a/src/AIS/AIS_ViewController.cxx +++ b/src/AIS/AIS_ViewController.cxx @@ -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; } } diff --git a/src/AIS/AIS_ViewController.hxx b/src/AIS/AIS_ViewController.hxx index 7c566b2dcc..3adca9081e 100644 --- a/src/AIS/AIS_ViewController.hxx +++ b/src/AIS/AIS_ViewController.hxx @@ -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