From 68bb09f96c2c87b18a5b7100134b64caae7e9c26 Mon Sep 17 00:00:00 2001 From: Jose Medrano Date: Wed, 6 Apr 2022 16:47:16 +0200 Subject: [WindowFrameBackend] We only add the parenting if the window was not already added+center --- Xwt.XamMac/Xwt.Mac/WindowFrameBackend.cs | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) (limited to 'Xwt.XamMac') diff --git a/Xwt.XamMac/Xwt.Mac/WindowFrameBackend.cs b/Xwt.XamMac/Xwt.Mac/WindowFrameBackend.cs index b520a67b..f96b4ce7 100644 --- a/Xwt.XamMac/Xwt.Mac/WindowFrameBackend.cs +++ b/Xwt.XamMac/Xwt.Mac/WindowFrameBackend.cs @@ -96,20 +96,17 @@ namespace Xwt.Mac internal void InternalShow () { Window.MakeKeyAndOrderFront (MacEngine.App); - if (Window.ParentWindow != null) { - if (!Window.ParentWindow.ChildWindows.Contains (Window)) - Window.ParentWindow.AddChildWindow (Window, NSWindowOrderingMode.Above); - - // always use NSWindow for alignment when running in guest mode and - // don't rely on AddChildWindow to position the window correctly - if (!(Window.ParentWindow is WindowBackend)) { - var parentBounds = MacDesktopBackend.ToDesktopRect (Window.ParentWindow.ContentRectFor (Window.ParentWindow.Frame)); - var bounds = ((IWindowFrameBackend)this).Bounds; - bounds.X = parentBounds.Center.X - (Window.Frame.Width / 2); - bounds.Y = parentBounds.Center.Y - (Window.Frame.Height / 2); - ((IWindowFrameBackend)this).Bounds = bounds; - } + var parentWindow = Window.ParentWindow; + + if (parentWindow != null && Visible) + { + //if there is any child window we remove it + if (!parentWindow.ChildWindows.Contains (Window)) + parentWindow.AddChildWindow (Window, NSWindowOrderingMode.Above); } + + //we center in any case + Util.CenterWindow(Window, parentWindow); } public void Present () -- cgit v1.2.3