Commit 23b4b79a authored by Sam Lantinga's avatar Sam Lantinga

Fixed bug 1165 (SDL_GetMouseState() returns wrong location after switch to/from fullscreen)

I'm solving this by moving the mouse to the correct location after a fullscreen mode switch.
parent 0eb0a30e
...@@ -1017,6 +1017,17 @@ SDL_GetWindowPixelFormat(SDL_Window * window) ...@@ -1017,6 +1017,17 @@ SDL_GetWindowPixelFormat(SDL_Window * window)
return display->current_mode.format; return display->current_mode.format;
} }
static void
SDL_RestoreMousePosition(SDL_Window *window)
{
int x, y;
if (window == SDL_GetMouseFocus()) {
SDL_GetMouseState(&x, &y);
SDL_WarpMouseInWindow(window, x, y);
}
}
static void static void
SDL_UpdateFullscreenMode(SDL_Window * window, SDL_bool fullscreen) SDL_UpdateFullscreenMode(SDL_Window * window, SDL_bool fullscreen)
{ {
...@@ -1070,6 +1081,8 @@ SDL_UpdateFullscreenMode(SDL_Window * window, SDL_bool fullscreen) ...@@ -1070,6 +1081,8 @@ SDL_UpdateFullscreenMode(SDL_Window * window, SDL_bool fullscreen)
} else { } else {
SDL_OnWindowResized(other); SDL_OnWindowResized(other);
} }
SDL_RestoreMousePosition(other);
return; return;
} }
} }
...@@ -1085,6 +1098,9 @@ SDL_UpdateFullscreenMode(SDL_Window * window, SDL_bool fullscreen) ...@@ -1085,6 +1098,9 @@ SDL_UpdateFullscreenMode(SDL_Window * window, SDL_bool fullscreen)
/* Generate a mode change event here */ /* Generate a mode change event here */
SDL_OnWindowResized(window); SDL_OnWindowResized(window);
/* Restore the cursor position */
SDL_RestoreMousePosition(window);
} }
#define CREATE_FLAGS \ #define CREATE_FLAGS \
......
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