Mercurial > sdl-ios-xcode
diff src/video/cocoa/SDL_cocoawindow.m @ 3528:59ff7a2beb57
Added an API function to query geometry of multiple monitors:
SDL_GetDisplayBounds()
Implemented multi-monitor window positions on Windows
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Sun, 06 Dec 2009 08:03:38 +0000 |
parents | 455a6c47d2c6 |
children | 09155ec3e291 |
line wrap: on
line diff
--- a/src/video/cocoa/SDL_cocoawindow.m Sun Dec 06 06:21:39 2009 +0000 +++ b/src/video/cocoa/SDL_cocoawindow.m Sun Dec 06 08:03:38 2009 +0000 @@ -378,23 +378,28 @@ { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; NSWindow *nswindow; - SDL_DisplayData *displaydata = (SDL_DisplayData *) SDL_GetDisplayFromWindow(window)->driverdata; + SDL_VideoDisplay *display = SDL_GetDisplayFromWindow(window); NSRect rect; + SDL_Rect bounds; unsigned int style; NSString *title; int status; - rect = Cocoa_DisplayBounds(displaydata->display); + Cocoa_GetDisplayBounds(_this, display, &bounds); if ((window->flags & SDL_WINDOW_FULLSCREEN) || window->x == SDL_WINDOWPOS_CENTERED) { - rect.origin.x += (rect.size.width - window->w) / 2; - } else if (window->x != SDL_WINDOWPOS_UNDEFINED) { + rect.origin.x = bounds.x + (bounds.w - window->w) / 2; + } else if (window->x == SDL_WINDOWPOS_UNDEFINED) { + rect.origin.x = bounds.x; + } else { rect.origin.x = window->x; } if ((window->flags & SDL_WINDOW_FULLSCREEN) || window->y == SDL_WINDOWPOS_CENTERED) { - rect.origin.y += (rect.size.height - window->h) / 2; - } else if (window->x != SDL_WINDOWPOS_UNDEFINED) { + rect.origin.y = bounds.y + (bounds.h - window->h) / 2; + } else if (window->x == SDL_WINDOWPOS_UNDEFINED) { + rect.origin.y = bounds.y; + } else { rect.origin.y = window->y; } rect.size.width = window->w; @@ -482,19 +487,20 @@ { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; NSWindow *nswindow = ((SDL_WindowData *) window->driverdata)->window; - SDL_DisplayData *displaydata = (SDL_DisplayData *) SDL_GetDisplayFromWindow(window)->driverdata; + SDL_VideoDisplay *display = SDL_GetDisplayFromWindow(window); NSRect rect; + SDL_Rect bounds; - rect = Cocoa_DisplayBounds(displaydata->display); + Cocoa_GetDisplayBounds(_this, display, &bounds); if ((window->flags & SDL_WINDOW_FULLSCREEN) || window->x == SDL_WINDOWPOS_CENTERED) { - rect.origin.x += (rect.size.width - window->w) / 2; + rect.origin.x = bounds.x + (bounds.w - window->w) / 2; } else { rect.origin.x = window->x; } if ((window->flags & SDL_WINDOW_FULLSCREEN) || window->y == SDL_WINDOWPOS_CENTERED) { - rect.origin.y += (rect.size.height - window->h) / 2; + rect.origin.y = bounds.y + (bounds.h - window->h) / 2; } else { rect.origin.y = window->y; }