[Mac] Fixed initial window position

Cocoa sets the desktop origin at the bottom-left of the main screen,
with +y going up. OpenTK is setting the origin at the top-left of the
main screen, so we need to invert the y-axis.
This commit is contained in:
thefiddler 2014-05-02 15:13:38 +02:00
parent 3824f55f18
commit 674cd54c29

View file

@ -173,7 +173,17 @@ namespace OpenTK.Platform.MacOS
Class.RegisterClass(viewClass);
// Create window instance
var contentRect = new System.Drawing.RectangleF(x, y, width, height);
// Note: The coordinate system of Cocoa places (0,0) at the bottom left.
// We need to get the height of the main screen and flip that in order
// to place the window at the correct position.
// Note: NSWindows are laid out relative to the main screen.
var screenRect =
Cocoa.SendRect(
Cocoa.SendIntPtr(
Cocoa.SendIntPtr(Class.Get("NSScreen"), Selector.Get("screens")),
Selector.Get("objectAtIndex:"), 0),
Selector.Get("frame"));
var contentRect = new System.Drawing.RectangleF(x, screenRect.Height - height - y, width, height);
var style = GetStyleMask(windowBorder);
var bufferingType = NSBackingStore.Buffered;