]> OCCT Git - occt.git/commitdiff
Visualization - Refactor mouse click handling logic for improved double-click detecti...
authorjboissy-mediasofts <jeremy.boissy@mediasofts.fr>
Thu, 27 Feb 2025 11:39:32 +0000 (12:39 +0100)
committerGitHub <noreply@github.com>
Thu, 27 Feb 2025 11:39:32 +0000 (11:39 +0000)
src/AIS/AIS_ViewController.cxx

index 157ef52336c8e0535a6cddd7e2d1536ac6ead670..f5955405673a1a57107bead86033927e1f87309f 100644 (file)
@@ -695,8 +695,21 @@ bool AIS_ViewController::UpdateMouseButtons(const Graphic3d_Vec2i& thePoint,
     if (double(aDelta.cwiseAbs().maxComp()) < aTolClick)
     {
       ++myMouseClickCounter;
-      const bool isDoubleClick = myMouseClickCounter == 2 && myMouseClickTimer.IsStarted()
-                                 && myMouseClickTimer.ElapsedTime() <= myMouseDoubleClickInt;
+
+      const bool isCounterValid = myMouseClickCounter == 2;
+      const bool isTimerStarted = myMouseClickTimer.IsStarted();
+      const bool isTimerElapsed = myMouseClickTimer.ElapsedTime() > myMouseDoubleClickInt;
+
+      const bool isTimerValid = isTimerStarted && !isTimerElapsed;
+
+      const bool isDoubleClick = isCounterValid && isTimerValid;
+
+      if (!isTimerValid)
+      {
+        myMouseClickCounter = 1;
+      }
+
+      myMouseClickCounter %= 2;
 
       myMouseClickTimer.Stop();
       myMouseClickTimer.Reset();