From 215dd331495712dd060376a4aee819e4193e0229 Mon Sep 17 00:00:00 2001 From: kgv Date: Thu, 24 Oct 2019 13:44:49 +0300 Subject: [PATCH] 0031102: Visualization, AIS_ViewController - AIS_DragAction_Stop is never emitted on mouse unclick AIS_ViewController::UpdateMousePosition() now sets myMouseStopDragOnUnclick flag to emit AIS_DragAction_Stop on mouse unclick. --- src/AIS/AIS_ViewController.cxx | 9 +++++++++ src/AIS/AIS_ViewController.hxx | 1 + 2 files changed, 10 insertions(+) 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