# HG changeset patch # User Jjgod Jiang # Date 1295565318 -3600 # Node ID bdff53ed6c8b9c070b7570fc531885c554f16db6 # Parent 8b7988f42fcb93cc64d36f571a59699c7d5e8688 Fix mouse wheel events in fullscreen mode for OS X With proposed patch by vernier. diff -r 8b7988f42fcb -r bdff53ed6c8b src/video/cocoa/SDL_cocoaevents.m --- a/src/video/cocoa/SDL_cocoaevents.m Thu Jan 20 16:05:59 2011 -0800 +++ b/src/video/cocoa/SDL_cocoaevents.m Fri Jan 21 00:15:18 2011 +0100 @@ -201,6 +201,7 @@ 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 -r 8b7988f42fcb -r bdff53ed6c8b src/video/cocoa/SDL_cocoamouse.h --- a/src/video/cocoa/SDL_cocoamouse.h Thu Jan 20 16:05:59 2011 -0800 +++ b/src/video/cocoa/SDL_cocoamouse.h Fri Jan 21 00:15:18 2011 +0100 @@ -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 -r 8b7988f42fcb -r bdff53ed6c8b src/video/cocoa/SDL_cocoamouse.m --- a/src/video/cocoa/SDL_cocoamouse.m Thu Jan 20 16:05:59 2011 -0800 +++ b/src/video/cocoa/SDL_cocoamouse.m Fri Jan 21 00:15:18 2011 +0100 @@ -93,6 +93,9 @@ 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 @@ { } +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 -r 8b7988f42fcb -r bdff53ed6c8b src/video/cocoa/SDL_cocoawindow.m --- a/src/video/cocoa/SDL_cocoawindow.m Thu Jan 20 16:05:59 2011 -0800 +++ b/src/video/cocoa/SDL_cocoawindow.m Fri Jan 21 00:15:18 2011 +0100 @@ -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 @@ - (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