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.
This commit is contained in:
parent
0eb0a30eca
commit
23b4b79a90
1 changed files with 16 additions and 0 deletions
|
@ -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)
|
||||||
} 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)
|
||||||
|
|
||||||
/* 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 \
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue