From 04ad26bd54962b7f6b25a907a0198c850fc88d51 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sat, 29 Jul 2006 22:42:48 +0000 Subject: [PATCH] Implemented Cocoa mouse wheel events --- include/SDL_events.h | 4 ++-- src/video/cocoa/SDL_cocoawindow.h | 1 + src/video/cocoa/SDL_cocoawindow.m | 22 +++++++++------------- test/common.c | 2 +- 4 files changed, 13 insertions(+), 16 deletions(-) diff --git a/include/SDL_events.h b/include/SDL_events.h index 74484d42b..3899fada1 100644 --- a/include/SDL_events.h +++ b/include/SDL_events.h @@ -60,11 +60,11 @@ typedef enum SDL_WINDOWEVENT, /**< Window state change */ SDL_KEYDOWN, /**< Keys pressed */ SDL_KEYUP, /**< Keys released */ - SDL_TEXTINPUT, /**< Keyboard text input */ + SDL_TEXTINPUT, /**< Keyboard text input */ SDL_MOUSEMOTION, /**< Mouse moved */ SDL_MOUSEBUTTONDOWN, /**< Mouse button pressed */ SDL_MOUSEBUTTONUP, /**< Mouse button released */ - SDL_MOUSEWHEEL, /**< Mouse wheel motion */ + SDL_MOUSEWHEEL, /**< Mouse wheel motion */ SDL_JOYAXISMOTION, /**< Joystick axis motion */ SDL_JOYBALLMOTION, /**< Joystick trackball motion */ SDL_JOYHATMOTION, /**< Joystick hat position change */ diff --git a/src/video/cocoa/SDL_cocoawindow.h b/src/video/cocoa/SDL_cocoawindow.h index b47c24b1e..ae221161e 100644 --- a/src/video/cocoa/SDL_cocoawindow.h +++ b/src/video/cocoa/SDL_cocoawindow.h @@ -54,6 +54,7 @@ typedef struct SDL_WindowData SDL_WindowData; -(void) rightMouseUp:(NSEvent *) theEvent; -(void) otherMouseUp:(NSEvent *) theEvent; -(void) mouseMoved:(NSEvent *) theEvent; +-(void) mouseDragged:(NSEvent *) theEvent; -(void) scrollWheel:(NSEvent *) theEvent; -(void) keyDown:(NSEvent *) theEvent; -(void) keyUp:(NSEvent *) theEvent; diff --git a/src/video/cocoa/SDL_cocoawindow.m b/src/video/cocoa/SDL_cocoawindow.m index 06af06b7b..8370d223b 100644 --- a/src/video/cocoa/SDL_cocoawindow.m +++ b/src/video/cocoa/SDL_cocoawindow.m @@ -208,26 +208,22 @@ - (void)mouseMoved:(NSEvent *)theEvent } point = [NSEvent mouseLocation]; - if (point.x < rect.origin.x || - point.x > (rect.origin.x + rect.size.width) || - point.y < rect.origin.y || - point.y > (rect.origin.y + rect.size.height)) { - if (window->flags & SDL_WINDOW_MOUSE_FOCUS) { - SDL_SendWindowEvent(_data->windowID, SDL_WINDOWEVENT_LEAVE, 0, 0); - } - } else { - if (!(window->flags & SDL_WINDOW_MOUSE_FOCUS)) { - SDL_SendWindowEvent(_data->windowID, SDL_WINDOWEVENT_ENTER, 0, 0); - } - } point.x = point.x - rect.origin.x; point.y = rect.size.height - (point.y - rect.origin.y); SDL_SendMouseMotion(index, 0, (int)point.x, (int)point.y); } +- (void)mouseDragged:(NSEvent *)theEvent +{ + [self mouseMoved:theEvent]; +} + - (void)scrollWheel:(NSEvent *)theEvent { -fprintf(stderr, "scrollWheel\n"); + int index; + + index = _data->videodata->mouse; + SDL_SendMouseWheel(index, (int)([theEvent deltaY]+0.9f)); } - (void)keyDown:(NSEvent *)theEvent diff --git a/test/common.c b/test/common.c index c37d9ed5e..64586dc0a 100644 --- a/test/common.c +++ b/test/common.c @@ -827,7 +827,7 @@ PrintEvent(SDL_Event * event) case SDL_MOUSEWHEEL: fprintf(stderr, "Mouse %d: wheel scrolled %d in window %d", event->wheel.which, event->wheel.motion, - event->button.windowID); + event->wheel.windowID); break; case SDL_JOYBALLMOTION: fprintf(stderr, "Joystick %d: ball %d moved by %d,%d",