From fb3d00bab073a49203965f8a8cdd228f94322091 Mon Sep 17 00:00:00 2001 From: Ilya Fedin Date: Sat, 23 Dec 2023 16:40:25 +0400 Subject: [PATCH] Do pixel<->angle delta conversion right --- ui/platform/win/ui_window_win.cpp | 3 ++- ui/widgets/elastic_scroll.cpp | 2 +- ui/widgets/elastic_scroll.h | 2 ++ 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/ui/platform/win/ui_window_win.cpp b/ui/platform/win/ui_window_win.cpp index 3fe7d01..356e85b 100644 --- a/ui/platform/win/ui_window_win.cpp +++ b/ui/platform/win/ui_window_win.cpp @@ -11,6 +11,7 @@ #include "ui/platform/win/ui_windows_direct_manipulation.h" #include "ui/platform/ui_platform_utility.h" #include "ui/widgets/rp_window.h" +#include "ui/widgets/elastic_scroll.h" #include "base/platform/win/base_windows_safe_library.h" #include "base/platform/base_platform_info.h" #include "base/integration.h" @@ -505,7 +506,7 @@ void WindowHelper::handleDirectManipulationEvent( QPointF(local.x, local.y), QPointF(global.x, global.y), event.delta, - event.delta, + event.delta * kPixelToAngleDelta, LookupModifiers(), phase, Qt::MouseEventSynthesizedBySystem); diff --git a/ui/widgets/elastic_scroll.cpp b/ui/widgets/elastic_scroll.cpp index 4406c43..5f15e12 100644 --- a/ui/widgets/elastic_scroll.cpp +++ b/ui/widgets/elastic_scroll.cpp @@ -1280,7 +1280,7 @@ QPoint ScrollDelta(not_null e) { || (Platform::IsWindows() && e->phase() != Qt::NoScrollPhase)) { return convert(e->pixelDelta()); } - return convert(e->angleDelta() * style::DevicePixelRatio()); + return convert(e->angleDelta() / kPixelToAngleDelta); } } // namespace Ui diff --git a/ui/widgets/elastic_scroll.h b/ui/widgets/elastic_scroll.h index fb6aec3..3113dc8 100644 --- a/ui/widgets/elastic_scroll.h +++ b/ui/widgets/elastic_scroll.h @@ -22,6 +22,8 @@ extern const style::ScrollArea &defaultScrollArea; namespace Ui { +constexpr auto kPixelToAngleDelta = 10; + struct ScrollState { int visibleFrom = 0; int visibleTill = 0;