From 770c1935d40f6b5984602f4d61e894b3519798f1 Mon Sep 17 00:00:00 2001 From: Jelle Raaijmakers Date: Wed, 27 Oct 2021 23:41:38 +0200 Subject: [PATCH] MouseSettings: Reset the double-click timer after every second click The old behavior of restarting the timer after every second click could result in double-click-chains (or triple+ clicks), which does not feel like the right behavior. By resetting the double-clicking timer, you need to perform a new full double-click to make the arrows change color again. --- .../MouseSettings/DoubleClickArrowWidget.cpp | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/Userland/Applications/MouseSettings/DoubleClickArrowWidget.cpp b/Userland/Applications/MouseSettings/DoubleClickArrowWidget.cpp index deccac60fd..8047bb19b3 100644 --- a/Userland/Applications/MouseSettings/DoubleClickArrowWidget.cpp +++ b/Userland/Applications/MouseSettings/DoubleClickArrowWidget.cpp @@ -55,20 +55,19 @@ void DoubleClickArrowWidget::paint_event(GUI::PaintEvent& event) void DoubleClickArrowWidget::mousedown_event(GUI::MouseEvent&) { - if (!m_double_click_timer.is_valid()) { + auto double_click_in_progress = m_double_click_timer.is_valid(); + auto elapsed_ms = double_click_in_progress ? m_double_click_timer.elapsed() : 0; + + if (!double_click_in_progress || elapsed_ms > m_double_click_speed) { m_double_click_timer.start(); return; } - auto elapsed_time = m_double_click_timer.elapsed(); - if (elapsed_time <= m_double_click_speed) { - dbgln("Double-click in {}ms", elapsed_time); - m_inverted = !m_inverted; - update(); - } + dbgln("Double-click in {}ms", elapsed_ms); + m_inverted = !m_inverted; + update(); - // Reset the timer after each click - m_double_click_timer.start(); + m_double_click_timer.reset(); } }