From 7e95fd8c4f477ac571e5f54c6ad6087dfda0f226 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Tue, 17 May 2022 18:43:03 +0100 Subject: [PATCH] [OSX] NSWindow open at position specified by user. --- native/Avalonia.Native/src/OSX/WindowBaseImpl.mm | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/native/Avalonia.Native/src/OSX/WindowBaseImpl.mm b/native/Avalonia.Native/src/OSX/WindowBaseImpl.mm index 223f169e45..9001208ce1 100644 --- a/native/Avalonia.Native/src/OSX/WindowBaseImpl.mm +++ b/native/Avalonia.Native/src/OSX/WindowBaseImpl.mm @@ -30,8 +30,8 @@ WindowBaseImpl::WindowBaseImpl(IAvnWindowBaseEvents *events, IAvnGlContext *gl) View = [[AvnView alloc] initWithParent:this]; StandardContainer = [[AutoFitContentView new] initWithContent:View]; - lastPositionSet.X = 100; - lastPositionSet.Y = 100; + lastPositionSet.X = -1; + lastPositionSet.Y = -1; lastSize = NSSize { 100, 100 }; lastMaxSize = NSSize { CGFLOAT_MAX, CGFLOAT_MAX}; lastMinSize = NSSize { 0, 0 }; @@ -92,6 +92,11 @@ HRESULT WindowBaseImpl::Show(bool activate, bool isDialog) { CreateNSWindow(isDialog); InitialiseNSWindow(); + if(lastPositionSet.X >= 0 && lastPositionSet.Y >= 0) + { + SetPosition(lastPositionSet); + } + UpdateStyle(); [Window setTitle:_lastTitle]; @@ -370,7 +375,10 @@ HRESULT WindowBaseImpl::SetPosition(AvnPoint point) { @autoreleasepool { lastPositionSet = point; - [Window setFrameTopLeftPoint:ToNSPoint(ConvertPointY(point))]; + + if(Window != nullptr) { + [Window setFrameTopLeftPoint:ToNSPoint(ConvertPointY(point))]; + } return S_OK; }