Commit 50f5123190be36051b3378f09f4a6ad689ea6c2b

Alex Szpakowski 2019-06-12T19:57:30

macOS: Fix the coordinate space of SDL_GetDisplayUsableBounds (thanks Tim!) Fixes bug #4518.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
diff --git a/src/video/cocoa/SDL_cocoamodes.m b/src/video/cocoa/SDL_cocoamodes.m
index b7c765a..95e88da 100644
--- a/src/video/cocoa/SDL_cocoamodes.m
+++ b/src/video/cocoa/SDL_cocoamodes.m
@@ -300,13 +300,9 @@ Cocoa_GetDisplayUsableBounds(_THIS, SDL_VideoDisplay * display, SDL_Rect * rect)
         return -1;
     }
 
-    const CGRect cgrect = CGDisplayBounds(cgdisplay);
     const NSRect frame = [screen visibleFrame];
-
-    // !!! FIXME: I assume -[NSScreen visibleFrame] is relative to the origin of the screen in question and not the whole desktop.
-    // !!! FIXME: The math vs CGDisplayBounds might be incorrect if that's not the case, though. Check this.
-    rect->x = (int)(cgrect.origin.x + frame.origin.x);
-    rect->y = (int)(cgrect.origin.y + frame.origin.y);
+    rect->x = (int)frame.origin.x;
+    rect->y = (int)(CGDisplayPixelsHigh(kCGDirectMainDisplay) - frame.origin.y - frame.size.height);
     rect->w = (int)frame.size.width;
     rect->h = (int)frame.size.height;