Commit 17d60ba5 authored by Sam Lantinga's avatar Sam Lantinga

Date: Tue, 11 May 2004 22:05:32 -0400

From: Bob Ippolito
Subject: [SDL] SDL_QuartzWM patches

I've sent in two small patches to SDL_QuartzWM directly to Sam over the
past few months (well, I think I sent both anyway) and neither of them
have been implemented.  I didn't receive a response, so I'm sure he was
just busy and/or they got lost, so I decided to sign up to the list and
post them here.

This patch rolls both of them together:
- Mouse cursor becomes visible if hidden when it moves outside of the
game window.  If you want it to stay invisible you should warp it
because if it's not warped a user might click some random other
application!  Commercial games behave in this way (or at least Warcraft
III does, which is the only one that uses a custom mouse cursor and no
warping that I've played in recent memory).
- Right mouse button emulation is changed from Command-Click to
Control-Click, which is how OS X behaves.

Consider copyright assigned to whomever needs it under whichever
license it needs to be under.. yadda yadda yadda.

--HG--
extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%40898
parent 77e3c78b
...@@ -472,7 +472,7 @@ void QZ_PumpEvents (_THIS) ...@@ -472,7 +472,7 @@ void QZ_PumpEvents (_THIS)
if ( getenv("SDL_HAS3BUTTONMOUSE") ) { if ( getenv("SDL_HAS3BUTTONMOUSE") ) {
DO_MOUSE_DOWN (SDL_BUTTON_LEFT); DO_MOUSE_DOWN (SDL_BUTTON_LEFT);
} else { } else {
if ( NSCommandKeyMask & current_mods ) { if ( NSControlKeyMask & current_mods ) {
last_virtual_button = SDL_BUTTON_RIGHT; last_virtual_button = SDL_BUTTON_RIGHT;
DO_MOUSE_DOWN (SDL_BUTTON_RIGHT); DO_MOUSE_DOWN (SDL_BUTTON_RIGHT);
} }
...@@ -519,7 +519,18 @@ void QZ_PumpEvents (_THIS) ...@@ -519,7 +519,18 @@ void QZ_PumpEvents (_THIS)
case NSLeftMouseDragged: case NSLeftMouseDragged:
case NSRightMouseDragged: case NSRightMouseDragged:
case NSOtherMouseDragged: /* usually middle mouse dragged */ case NSOtherMouseDragged: /* usually middle mouse dragged */
case NSMouseMoved: case NSMouseMoved:
/* Show the cursor if it was hidden by SDL_ShowCursor() */
/* this is how games I've seen work */
if (!cursor_visible) {
if (!isInGameWin && cursor_hidden) {
ShowCursor();
cursor_hidden = NO;
} else if (isInGameWin && !cursor_hidden) {
HideCursor();
cursor_hidden = YES;
}
}
if ( grab_state == QZ_INVISIBLE_GRAB ) { if ( grab_state == QZ_INVISIBLE_GRAB ) {
/* /*
...@@ -642,6 +653,6 @@ void QZ_PumpEvents (_THIS) ...@@ -642,6 +653,6 @@ void QZ_PumpEvents (_THIS)
/* handle accumulated mouse moved events */ /* handle accumulated mouse moved events */
if (dx != 0 || dy != 0) if (dx != 0 || dy != 0)
SDL_PrivateMouseMotion (0, 1, dx, dy); SDL_PrivateMouseMotion (0, 1, dx, dy);
[ pool release ]; [ pool release ];
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment