mirror of https://github.com/encounter/SDL.git
Fix SDL_SetWindowPosition on fullscreen windows.
This reverts http://hg.libsdl.org/SDL/rev/7cdeb64faa72 and fixes it in the correct way. If you call SDL_SetWindowPosition on a fullscreen window, it would update the x & y variables for the window, but not actually move the window (since it was fullscreen). That would make the internal state of the SDL_Window incorrect, causing SDL_WarpMouseInWindow to offset incorrectly. This makes it so SDL_SetWindowPosition updates the `windowed' x & y coordinates, which take effect when you revert from fullscreen.
This commit is contained in:
parent
cca094225a
commit
c455f7291c
|
@ -1551,6 +1551,14 @@ SDL_SetWindowPosition(SDL_Window * window, int x, int y)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ((window->flags & SDL_WINDOW_FULLSCREEN)) {
|
||||||
|
if (!SDL_WINDOWPOS_ISUNDEFINED(x)) {
|
||||||
|
window->windowed.x = x;
|
||||||
|
}
|
||||||
|
if (!SDL_WINDOWPOS_ISUNDEFINED(y)) {
|
||||||
|
window->windowed.y = y;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
if (!SDL_WINDOWPOS_ISUNDEFINED(x)) {
|
if (!SDL_WINDOWPOS_ISUNDEFINED(x)) {
|
||||||
window->x = x;
|
window->x = x;
|
||||||
}
|
}
|
||||||
|
@ -1558,7 +1566,6 @@ SDL_SetWindowPosition(SDL_Window * window, int x, int y)
|
||||||
window->y = y;
|
window->y = y;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(window->flags & SDL_WINDOW_FULLSCREEN)) {
|
|
||||||
if (_this->SetWindowPosition) {
|
if (_this->SetWindowPosition) {
|
||||||
_this->SetWindowPosition(_this, window);
|
_this->SetWindowPosition(_this, window);
|
||||||
}
|
}
|
||||||
|
|
|
@ -204,13 +204,7 @@ static void
|
||||||
Cocoa_WarpMouse(SDL_Window * window, int x, int y)
|
Cocoa_WarpMouse(SDL_Window * window, int x, int y)
|
||||||
{
|
{
|
||||||
SDL_Mouse *mouse = SDL_GetMouse();
|
SDL_Mouse *mouse = SDL_GetMouse();
|
||||||
CGPoint point = CGPointMake(x, y);
|
CGPoint point = CGPointMake(x + (float)window->x, y + (float)window->y);
|
||||||
|
|
||||||
if (!(window->flags & SDL_WINDOW_FULLSCREEN))
|
|
||||||
{
|
|
||||||
point.x += window->x;
|
|
||||||
point.y += window->y;
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
{
|
||||||
/* This makes Cocoa_HandleMouseEvent ignore this delta in the next
|
/* This makes Cocoa_HandleMouseEvent ignore this delta in the next
|
||||||
|
|
Loading…
Reference in New Issue