diff --git a/src/video/cocoa/SDL_cocoaevents.m b/src/video/cocoa/SDL_cocoaevents.m index 3c1055101..8a94e0d60 100644 --- a/src/video/cocoa/SDL_cocoaevents.m +++ b/src/video/cocoa/SDL_cocoaevents.m @@ -201,6 +201,7 @@ Cocoa_PumpEvents(_THIS) case NSLeftMouseDragged: case NSRightMouseDragged: case NSOtherMouseDragged: /* usually middle mouse dragged */ + case NSScrollWheel: case NSMouseMoved: Cocoa_HandleMouseEvent(_this, event); /* Pass through to NSApp to make sure everything stays in sync */ diff --git a/src/video/cocoa/SDL_cocoamouse.h b/src/video/cocoa/SDL_cocoamouse.h index 41675323e..9f2b21a7f 100644 --- a/src/video/cocoa/SDL_cocoamouse.h +++ b/src/video/cocoa/SDL_cocoamouse.h @@ -27,6 +27,7 @@ extern void Cocoa_InitMouse(_THIS); extern void Cocoa_HandleMouseEvent(_THIS, NSEvent * event); extern void Cocoa_QuitMouse(_THIS); +extern void Cocoa_HandleMouseWheel(SDL_Window *window, NSEvent * event); #endif /* _SDL_cocoamouse_h */ diff --git a/src/video/cocoa/SDL_cocoamouse.m b/src/video/cocoa/SDL_cocoamouse.m index c0ac2feaf..97bc3010b 100644 --- a/src/video/cocoa/SDL_cocoamouse.m +++ b/src/video/cocoa/SDL_cocoamouse.m @@ -93,6 +93,9 @@ Cocoa_HandleMouseEvent(_THIS, NSEvent *event) case NSRightMouseUp: SDL_SendMouseButton(window, SDL_RELEASED, ConvertMouseButtonToSDL([event buttonNumber])); break; + case NSScrollWheel: + Cocoa_HandleMouseWheel(window, event); + break; case NSLeftMouseDragged: case NSRightMouseDragged: case NSOtherMouseDragged: /* usually middle mouse dragged */ @@ -109,4 +112,23 @@ Cocoa_QuitMouse(_THIS) { } +void +Cocoa_HandleMouseWheel(SDL_Window *window, NSEvent *event) +{ + float x = [event deltaX]; + float y = [event deltaY]; + + if (x > 0) { + x += 0.9f; + } else if (x < 0) { + x -= 0.9f; + } + if (y > 0) { + y += 0.9f; + } else if (y < 0) { + y -= 0.9f; + } + SDL_SendMouseWheel(window, (int)x, (int)y); +} + /* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/video/cocoa/SDL_cocoawindow.m b/src/video/cocoa/SDL_cocoawindow.m index c3fe97121..54d71d496 100644 --- a/src/video/cocoa/SDL_cocoawindow.m +++ b/src/video/cocoa/SDL_cocoawindow.m @@ -29,6 +29,7 @@ #include "../../events/SDL_windowevents_c.h" #include "SDL_cocoavideo.h" #include "SDL_cocoashape.h" +#include "SDL_cocoamouse.h" static __inline__ void ConvertNSRect(NSRect *r) { @@ -260,20 +261,7 @@ static __inline__ void ConvertNSRect(NSRect *r) - (void)scrollWheel:(NSEvent *)theEvent { - float x = [theEvent deltaX]; - float y = [theEvent deltaY]; - - if (x > 0) { - x += 0.9f; - } else if (x < 0) { - x -= 0.9f; - } - if (y > 0) { - y += 0.9f; - } else if (y < 0) { - y -= 0.9f; - } - SDL_SendMouseWheel(_data->window, (int)x, (int)y); + Cocoa_HandleMouseWheel(_data->window, theEvent); } - (void)touchesBeganWithEvent:(NSEvent *) theEvent