Skip to content

Commit

Permalink
Fixed bug 2346 - Mac: mousewheel events have flipped horizontal scrol…
Browse files Browse the repository at this point in the history
…l values

Alex Szpakowski

On my Mac OS X system (10.9.1), the SDL_MOUSEWHEEL event reports negative X values when my trackpad scrolls to the right, and positive X values when my trackpad scrolls to the left. This is backwards from what I'd expect, and I don't think it matches the Windows wheel events.

The vertical scroll values are what I'd expect though, and are consistent what gets reported on Windows (positive Y for scrolling up, negative Y for scrolling down.)

This is with "scroll direction: natural" disabled in the OS X trackpad settings (i.e. my scroll direction in non-SDL OS X programs matches what happens in Windows and Linux.)

I also tested with the horizontal scroll on a real mouse (Logitech G500 without custom drivers), and the horizontal scroll values in SDL are still flipped.

I "solved" the issue for myself by changing this line in the Cocoa_HandleMouseWheel function:

    float x = [event deltaX];

to this:

    float x = -[event deltaX];

I believe it should work fine with that change - I found something similar in another codebase while looking online for my issue - but I haven't tested on anything below Mac OS 10.8.
  • Loading branch information
slouken committed Feb 22, 2014
1 parent 7c33f23 commit af0ab49
Show file tree
Hide file tree
Showing 2 changed files with 3 additions and 3 deletions.
4 changes: 2 additions & 2 deletions include/SDL_events.h
Expand Up @@ -257,8 +257,8 @@ typedef struct SDL_MouseWheelEvent
Uint32 timestamp;
Uint32 windowID; /**< The window with mouse focus, if any */
Uint32 which; /**< The mouse instance id, or SDL_TOUCH_MOUSEID */
Sint32 x; /**< The amount scrolled horizontally */
Sint32 y; /**< The amount scrolled vertically */
Sint32 x; /**< The amount scrolled horizontally, positive to the right and negative to the left */
Sint32 y; /**< The amount scrolled vertically, positive away from the user and negative toward the user */
} SDL_MouseWheelEvent;

/**
Expand Down
2 changes: 1 addition & 1 deletion src/video/cocoa/SDL_cocoamouse.m
Expand Up @@ -291,7 +291,7 @@ + (NSCursor *)invisibleCursor
{
SDL_Mouse *mouse = SDL_GetMouse();

float x = [event deltaX];
float x = -[event deltaX];
float y = [event deltaY];

if (x > 0) {
Expand Down

0 comments on commit af0ab49

Please sign in to comment.