From 0bb395b21db53d65e195c59d9995a0fb4fa74463 Mon Sep 17 00:00:00 2001 From: Alexander Weiss Date: Sat, 26 Jan 2019 16:22:18 +0100 Subject: Change #6800: [OSX] Use high-precision scrolling deltas for 2D scrolling --- src/video/cocoa/event.mm | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) (limited to 'src/video') diff --git a/src/video/cocoa/event.mm b/src/video/cocoa/event.mm index 30b6563b6..77f683af8 100644 --- a/src/video/cocoa/event.mm +++ b/src/video/cocoa/event.mm @@ -575,9 +575,25 @@ static bool QZ_PollEvent() _cursor.wheel++; } /* else: deltaY was 0.0 and we don't want to do anything */ - /* Set the scroll count for scrollwheel scrolling */ - _cursor.h_wheel -= (int)([ event deltaX ] * 5 * _settings_client.gui.scrollwheel_multiplier); - _cursor.v_wheel -= (int)([ event deltaY ] * 5 * _settings_client.gui.scrollwheel_multiplier); + /* Update the scroll count for 2D scrolling */ + CGFloat deltaX; + CGFloat deltaY; + + /* Use precise scrolling-specific deltas if they're supported. */ +#if (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7) + if ([event respondsToSelector:@selector(scrollingDeltaX)]) { + deltaX = [ event scrollingDeltaX ] * 0.5f; + deltaY = [ event scrollingDeltaY ] * 0.5f; + } else +#endif + { + deltaX = [ event deltaX ] * 5; + deltaY = [ event deltaY ] * 5; + } + + _cursor.h_wheel -= (int)(deltaX * _settings_client.gui.scrollwheel_multiplier); + _cursor.v_wheel -= (int)(deltaY * _settings_client.gui.scrollwheel_multiplier); + break; #if (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5) -- cgit v1.2.3-54-g00ecf