Fix inverted horizontal scroll on macOS

In winit the swipe from left to right on touchpad should
generate positive horizontal delta change, however on
macOS it was the other way around without
natural scrolling.

This commit inverses the horizontal scrolling delta
in 'MouseScrollDelta' events to match other platforms.

Fixes #1695.
This commit is contained in:
Michael Kirk 2020-09-06 07:41:19 -07:00 committed by GitHub
parent 658a9a4ea8
commit e2cf2a5754
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 3 additions and 1 deletions

View file

@ -27,6 +27,7 @@
- On NetBSD, fixed crash due to incorrect detection of the main thread. - On NetBSD, fixed crash due to incorrect detection of the main thread.
- **Breaking:** The virtual key code `Subtract` has been renamed to `NumpadSubtract` - **Breaking:** The virtual key code `Subtract` has been renamed to `NumpadSubtract`
- **Breaking:** On X11, `-` key is mapped to the `Minus` virtual key code, instead of `Subtract` - **Breaking:** On X11, `-` key is mapped to the `Minus` virtual key code, instead of `Subtract`
- On macOS, fix inverted horizontal scroll.
# 0.22.2 (2020-05-16) # 0.22.2 (2020-05-16)

View file

@ -1003,7 +1003,8 @@ extern "C" fn scroll_wheel(this: &Object, _sel: Sel, event: id) {
let state = &mut *(state_ptr as *mut ViewState); let state = &mut *(state_ptr as *mut ViewState);
let delta = { let delta = {
let (x, y) = (event.scrollingDeltaX(), event.scrollingDeltaY()); // macOS horizontal sign convention is the inverse of winit.
let (x, y) = (event.scrollingDeltaX() * -1.0, event.scrollingDeltaY());
if event.hasPreciseScrollingDeltas() == YES { if event.hasPreciseScrollingDeltas() == YES {
let delta = LogicalPosition::new(x, y).to_physical(state.get_scale_factor()); let delta = LogicalPosition::new(x, y).to_physical(state.get_scale_factor());
MouseScrollDelta::PixelDelta(delta) MouseScrollDelta::PixelDelta(delta)