diff --git a/Userland/Libraries/LibDesktop/Screensaver.cpp b/Userland/Libraries/LibDesktop/Screensaver.cpp index dec888282b..f5f181acdc 100644 --- a/Userland/Libraries/LibDesktop/Screensaver.cpp +++ b/Userland/Libraries/LibDesktop/Screensaver.cpp @@ -10,6 +10,7 @@ namespace Desktop { static constexpr int mouse_max_distance_move = 10; +static constexpr int mouse_tracking_delay_milliseconds = 750; ErrorOr> Screensaver::create_window(StringView title, StringView icon) { @@ -39,6 +40,10 @@ void Screensaver::mousedown_event(GUI::MouseEvent&) void Screensaver::mousemove_event(GUI::MouseEvent& event) { + auto now = AK::Time::now_monotonic(); + if ((now - m_start_time).to_milliseconds() < mouse_tracking_delay_milliseconds) + return; + if (!m_mouse_origin.has_value()) m_mouse_origin = event.position(); else if (event.position().distance_from(m_mouse_origin.value()) > mouse_max_distance_move) diff --git a/Userland/Libraries/LibDesktop/Screensaver.h b/Userland/Libraries/LibDesktop/Screensaver.h index c3d715d1a6..0cebf0082f 100644 --- a/Userland/Libraries/LibDesktop/Screensaver.h +++ b/Userland/Libraries/LibDesktop/Screensaver.h @@ -10,6 +10,7 @@ #include #include #include +#include #include #include #include @@ -27,10 +28,17 @@ public: virtual void mousedown_event(GUI::MouseEvent& event) override; virtual void mousemove_event(GUI::MouseEvent& event) override; +protected: + Screensaver() + : m_start_time(AK::Time::now_monotonic()) + { + } + private: void trigger_exit(); Optional m_mouse_origin; + AK::Time m_start_time; }; }