Fixed OS X scroll X-axis inversion.

When natural scrolling is disabled on OS X, the X-axis of the scroll
offsets is inverted compared to the direction on Windows.  The X11
scrolling directions are unspecified and so have been aligned with the
Windows port.  Natural scrolling inverts both axes on both OS X and X11,
so the issue remains when the feature is enabled.

This inverts the provided X-axis scroll offset, making "unnatural"
scroll data align with the Windows and X11 ports and "natual" scroll
data be fully inverted and aligned with its counterpart on X11.

Fixes #239.
This commit is contained in:
Camilla Berglund 2014-10-08 13:40:50 +02:00
parent 5f13279557
commit f4a467a864
2 changed files with 8 additions and 1 deletions

View File

@ -106,6 +106,8 @@ GLFW bundles a number of dependencies in the `deps/` directory.
bit field was unchanged
- [Cocoa] Bugfix: Joystick enumeration took hundreds of ms on some systems
- [Cocoa] Bugfix: The cursor was hidden when the user resized a GLFW window
- [Cocoa] Bugfix: The X-axis scroll offsets were inverted relative to the
Windows and X11 ports
- [Win32] Enabled generation of pkg-config file for MinGW
- [Win32] Removed option to require explicitly linking against `winmm.dll`
- [Win32] Bugfix: Failure to load winmm or its functions was not reported to

View File

@ -683,7 +683,12 @@ static int translateKey(unsigned int key)
}
if (fabs(deltaX) > 0.0 || fabs(deltaY) > 0.0)
_glfwInputScroll(window, deltaX, deltaY);
{
// NOTE: The X-axis is inverted for consistency with Windows and X11.
// Natural scrolling inverts both axes, making it consistent with
// the similarly named feature on modern X11 desktop systems.
_glfwInputScroll(window, -deltaX, deltaY);
}
}
- (void)resetCursorRects