From: jboissy-mediasofts Date: Thu, 27 Feb 2025 11:39:32 +0000 (+0100) Subject: Visualization - Refactor mouse click handling logic for improved double-click detecti... X-Git-Tag: V8_0_0_rc1~53 X-Git-Url: http://git.dev.opencascade.org/gitweb/?a=commitdiff_plain;h=4556423a0486b6e723b2f62ee9f9239c0cadbfb8;p=occt.git Visualization - Refactor mouse click handling logic for improved double-click detection (#385) --- diff --git a/src/AIS/AIS_ViewController.cxx b/src/AIS/AIS_ViewController.cxx index 157ef52336..f595540567 100644 --- a/src/AIS/AIS_ViewController.cxx +++ b/src/AIS/AIS_ViewController.cxx @@ -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();