Mercurial > sdl-ios-xcode
diff src/video/quartz/SDL_QuartzEvents.m @ 624:fb78cadbfeb8
More-than-three mouse button support for Quartz target.
author | Ryan C. Gordon <icculus@icculus.org> |
---|---|
date | Tue, 27 May 2003 07:33:11 +0000 |
parents | bf816ce70144 |
children | 52864d66d168 |
line wrap: on
line diff
--- a/src/video/quartz/SDL_QuartzEvents.m Sun May 25 02:17:52 2003 +0000 +++ b/src/video/quartz/SDL_QuartzEvents.m Tue May 27 07:33:11 2003 +0000 @@ -378,6 +378,25 @@ CFRelease (rls); } + +// Try to map Quartz mouse buttons to SDL's lingo... +static int QZ_OtherMouseButtonToSDL(int button) +{ + switch (button) + { + case 0: + return(SDL_BUTTON_LEFT); // 1 + case 1: + return(SDL_BUTTON_RIGHT); // 3 + case 2: + return(SDL_BUTTON_MIDDLE); // 2 + } + + // >= 3: skip 4 & 5, since those are the SDL mousewheel buttons. + return(button + 3); +} + + static void QZ_PumpEvents (_THIS) { int firstMouseEvent; @@ -420,6 +439,7 @@ inMode: NSDefaultRunLoopMode dequeue:YES ]; if (event != nil) { + int button; unsigned int type; BOOL isForGameWin; BOOL isInGameWin; @@ -466,8 +486,7 @@ } } break; - case NSOtherMouseDown: DO_MOUSE_DOWN (SDL_BUTTON_MIDDLE); break; - case NSRightMouseDown: DO_MOUSE_DOWN (SDL_BUTTON_RIGHT); break; + case NSLeftMouseUp: if ( last_virtual_button != 0 ) { DO_MOUSE_UP (last_virtual_button); @@ -477,8 +496,19 @@ DO_MOUSE_UP (SDL_BUTTON_LEFT); } break; - case NSOtherMouseUp: DO_MOUSE_UP (SDL_BUTTON_MIDDLE); break; - case NSRightMouseUp: DO_MOUSE_UP (SDL_BUTTON_RIGHT); break; + + case NSOtherMouseDown: + case NSRightMouseDown: + button = QZ_OtherMouseButtonToSDL([ event buttonNumber ]); + DO_MOUSE_DOWN (button); + break; + + case NSOtherMouseUp: + case NSRightMouseUp: + button = QZ_OtherMouseButtonToSDL([ event buttonNumber ]); + DO_MOUSE_UP (button); + break; + case NSSystemDefined: /* Future: up to 32 "mouse" buttons can be handled.