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;
     }