diff --git a/src/events/SDL_mouse.c b/src/events/SDL_mouse.c index 9e5cce106..d77c9b78a 100644 --- a/src/events/SDL_mouse.c +++ b/src/events/SDL_mouse.c @@ -38,8 +38,8 @@ static char rcsid = /* These are static for our mouse handling code */ -static Sint16 SDL_MouseX = 0; -static Sint16 SDL_MouseY = 0; +static Sint16 SDL_MouseX = -1; +static Sint16 SDL_MouseY = -1; static Sint16 SDL_DeltaX = 0; static Sint16 SDL_DeltaY = 0; static Uint8 SDL_ButtonState = 0; @@ -49,8 +49,8 @@ static Uint8 SDL_ButtonState = 0; int SDL_MouseInit(void) { /* The mouse is at (0,0) */ - SDL_MouseX = 0; - SDL_MouseY = 0; + SDL_MouseX = -1; + SDL_MouseY = -1; SDL_DeltaX = 0; SDL_DeltaY = 0; SDL_ButtonState = 0; @@ -72,10 +72,20 @@ void SDL_ResetMouse(void) Uint8 SDL_GetMouseState (int *x, int *y) { - if ( x ) - *x = SDL_MouseX; - if ( y ) - *y = SDL_MouseY; + if ( x ) { + if ( SDL_MouseX < 0 ) { + *x = 0; + } else { + *x = SDL_MouseX; + } + } + if ( y ) { + if ( SDL_MouseY < 0 ) { + *y = 0; + } else { + *y = SDL_MouseY; + } + } return(SDL_ButtonState); } @@ -152,7 +162,7 @@ int SDL_PrivateMouseMotion(Uint8 buttonstate, int relative, Sint16 x, Sint16 y) This prevents lots of extraneous large delta relative motion when the screen is windowed mode and the mouse is outside the window. */ - if ( ! relative ) { + if ( ! relative && SDL_MouseX >= 0 && SDL_MouseY >= 0 ) { Xrel = X-SDL_MouseX; Yrel = Y-SDL_MouseY; }