Changed scrollWheel to use precise scrolling deltas when available.

Use precise scrolling deltas only on supported versions of OS X;
hasPreciseScrollingDeltas, scrollingDeltaX, scrollingDeltaY are
available in OS X v10.7 and later.
Replaced a single occurence of a tab character with 4 spaces for
consistency in src/socoa_window.m.
This commit is contained in:
Dmitri Shuralyov 2013-07-17 19:36:43 -07:00
parent 0463e196b4
commit 5655e26315
2 changed files with 23 additions and 3 deletions

View File

@ -112,6 +112,7 @@ See the [GLFW documentation](http://www.glfw.org/docs/latest/).
returned by `glfwGetProcAddress` returned by `glfwGetProcAddress`
- [Win32] Bugfix: The user32 and dwmapi module handles were not freed on - [Win32] Bugfix: The user32 and dwmapi module handles were not freed on
library termination library termination
- [Cocoa] Changed scroll callback to use precise scrolling deltas when available
- [Cocoa] Enabled explicit creation of OpenGL 3.x and 4.x contexts as supported - [Cocoa] Enabled explicit creation of OpenGL 3.x and 4.x contexts as supported
by OS X 10.9 by OS X 10.9
- [Cocoa] Bugfix: The clipboard string was not freed on terminate - [Cocoa] Bugfix: The clipboard string was not freed on terminate

View File

@ -606,8 +606,27 @@ static int translateKey(unsigned int key)
- (void)scrollWheel:(NSEvent *)event - (void)scrollWheel:(NSEvent *)event
{ {
double deltaX = [event deltaX]; double deltaX, deltaY;
double deltaY = [event deltaY];
#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1070
if ([event respondsToSelector:@selector(hasPreciseScrollingDeltas:)])
{
deltaX = [event scrollingDeltaX];
deltaY = [event scrollingDeltaY];
if ([event hasPreciseScrollingDeltas])
{
deltaX *= 0.1;
deltaY *= 0.1;
}
}
else
#else
{
deltaX = [event deltaX];
deltaY = [event deltaY];
}
#endif /*MAC_OS_X_VERSION_MAX_ALLOWED*/
if (fabs(deltaX) > 0.0 || fabs(deltaY) > 0.0) if (fabs(deltaX) > 0.0 || fabs(deltaY) > 0.0)
_glfwInputScroll(window, deltaX, deltaY); _glfwInputScroll(window, deltaX, deltaY);