The window position is display relative, at least for now...
--HG-- extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%404273
This commit is contained in:
parent
712ccbd13c
commit
5c77d00a62
2 changed files with 19 additions and 13 deletions
|
@ -298,7 +298,8 @@ SetupWindowData(_THIS, SDL_Window * window, NSWindow *nswindow, SDL_bool created
|
|||
{
|
||||
NSAutoreleasePool *pool;
|
||||
SDL_VideoData *videodata = (SDL_VideoData *) _this->driverdata;
|
||||
SDL_DisplayData *displaydata = (SDL_DisplayData *) SDL_GetDisplayFromWindow(window)->driverdata;
|
||||
SDL_VideoDisplay *display = SDL_GetDisplayFromWindow(window);
|
||||
SDL_DisplayData *displaydata = (SDL_DisplayData *) display->driverdata;
|
||||
SDL_WindowData *data;
|
||||
|
||||
/* Allocate the window data */
|
||||
|
@ -321,10 +322,12 @@ SetupWindowData(_THIS, SDL_Window * window, NSWindow *nswindow, SDL_bool created
|
|||
|
||||
/* Fill in the SDL window with the window data */
|
||||
{
|
||||
SDL_Rect bounds;
|
||||
NSRect rect = [nswindow contentRectForFrameRect:[nswindow frame]];
|
||||
ConvertNSRect(&rect);
|
||||
window->x = (int)rect.origin.x;
|
||||
window->y = (int)rect.origin.y;
|
||||
Cocoa_GetDisplayBounds(_this, display, &bounds);
|
||||
window->x = (int)rect.origin.x - bounds.x;
|
||||
window->y = (int)rect.origin.y - bounds.y;
|
||||
window->w = (int)rect.size.width;
|
||||
window->h = (int)rect.size.height;
|
||||
}
|
||||
|
@ -392,7 +395,7 @@ Cocoa_CreateWindow(_THIS, SDL_Window * window)
|
|||
} else if (window->x == SDL_WINDOWPOS_UNDEFINED) {
|
||||
rect.origin.x = bounds.x;
|
||||
} else {
|
||||
rect.origin.x = window->x;
|
||||
rect.origin.x = bounds.x + window->x;
|
||||
}
|
||||
if ((window->flags & SDL_WINDOW_FULLSCREEN)
|
||||
|| window->y == SDL_WINDOWPOS_CENTERED) {
|
||||
|
@ -400,7 +403,7 @@ Cocoa_CreateWindow(_THIS, SDL_Window * window)
|
|||
} else if (window->x == SDL_WINDOWPOS_UNDEFINED) {
|
||||
rect.origin.y = bounds.y;
|
||||
} else {
|
||||
rect.origin.y = window->y;
|
||||
rect.origin.y = bounds.y + window->y;
|
||||
}
|
||||
rect.size.width = window->w;
|
||||
rect.size.height = window->h;
|
||||
|
@ -496,13 +499,13 @@ Cocoa_SetWindowPosition(_THIS, SDL_Window * window)
|
|||
|| window->x == SDL_WINDOWPOS_CENTERED) {
|
||||
rect.origin.x = bounds.x + (bounds.w - window->w) / 2;
|
||||
} else {
|
||||
rect.origin.x = window->x;
|
||||
rect.origin.x = bounds.x + window->x;
|
||||
}
|
||||
if ((window->flags & SDL_WINDOW_FULLSCREEN)
|
||||
|| window->y == SDL_WINDOWPOS_CENTERED) {
|
||||
rect.origin.y = bounds.y + (bounds.h - window->h) / 2;
|
||||
} else {
|
||||
rect.origin.y = window->y;
|
||||
rect.origin.y = bounds.y + window->y;
|
||||
}
|
||||
rect.size.width = window->w;
|
||||
rect.size.height = window->h;
|
||||
|
|
|
@ -86,6 +86,7 @@ static int
|
|||
SetupWindowData(_THIS, SDL_Window * window, HWND hwnd, SDL_bool created)
|
||||
{
|
||||
SDL_VideoData *videodata = (SDL_VideoData *) _this->driverdata;
|
||||
SDL_VideoDisplay *display = SDL_GetDisplayFromWindow(window);
|
||||
SDL_WindowData *data;
|
||||
|
||||
/* Allocate the window data */
|
||||
|
@ -123,8 +124,10 @@ SetupWindowData(_THIS, SDL_Window * window, HWND hwnd, SDL_bool created)
|
|||
point.x = 0;
|
||||
point.y = 0;
|
||||
if (ClientToScreen(hwnd, &point)) {
|
||||
window->x = point.x;
|
||||
window->y = point.y;
|
||||
SDL_Rect bounds;
|
||||
WIN_GetDisplayBounds(_this, display, &bounds);
|
||||
window->x = point.x - bounds.x;
|
||||
window->y = point.y - bounds.y;
|
||||
}
|
||||
}
|
||||
{
|
||||
|
@ -232,7 +235,7 @@ WIN_CreateWindow(_THIS, SDL_Window * window)
|
|||
x = bounds.x;
|
||||
}
|
||||
} else {
|
||||
x = window->x + rect.left;
|
||||
x = bounds.x + window->x + rect.left;
|
||||
}
|
||||
if ((window->flags & SDL_WINDOW_FULLSCREEN)
|
||||
|| window->y == SDL_WINDOWPOS_CENTERED) {
|
||||
|
@ -244,7 +247,7 @@ WIN_CreateWindow(_THIS, SDL_Window * window)
|
|||
y = bounds.y;
|
||||
}
|
||||
} else {
|
||||
y = window->y + rect.top;
|
||||
y = bounds.y + window->y + rect.top;
|
||||
}
|
||||
|
||||
hwnd =
|
||||
|
@ -459,13 +462,13 @@ WIN_SetWindowPosition(_THIS, SDL_Window * window)
|
|||
|| window->x == SDL_WINDOWPOS_CENTERED) {
|
||||
x = bounds.x + (bounds.w - window->w) / 2;
|
||||
} else {
|
||||
x = window->x + rect.left;
|
||||
x = bounds.x + window->x + rect.left;
|
||||
}
|
||||
if ((window->flags & SDL_WINDOW_FULLSCREEN)
|
||||
|| window->y == SDL_WINDOWPOS_CENTERED) {
|
||||
y = bounds.y + (bounds.h - window->h) / 2;
|
||||
} else {
|
||||
y = window->y + rect.top;
|
||||
y = bounds.y + window->y + rect.top;
|
||||
}
|
||||
|
||||
SetWindowPos(hwnd, top, x, y, 0, 0, (SWP_NOCOPYBITS | SWP_NOSIZE));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue