diff options
author | Jose Medrano <josmed@microsoft.com> | 2022-03-18 13:38:07 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-03-18 13:38:07 +0300 |
commit | 9bad871dd2ac47f48dbf25a67c023aaa52033f56 (patch) | |
tree | 239a773e1ddfbfd16ab251ac9c7bd645c758a21a | |
parent | f418a5fe8e5592ae7f1e18964b8875ea676309a7 (diff) | |
parent | fbe1d60cc374964d33a2f86cea9ba76d3d9640e9 (diff) |
Merge pull request #1097 from mono/dialogbackend-parent
[Xam.Mac] Fixes parenting in DialogBackend
-rw-r--r-- | Xwt.XamMac/Xwt.Mac/DialogBackend.cs | 7 | ||||
-rw-r--r-- | Xwt.XamMac/Xwt.Mac/Util.cs | 14 |
2 files changed, 21 insertions, 0 deletions
diff --git a/Xwt.XamMac/Xwt.Mac/DialogBackend.cs b/Xwt.XamMac/Xwt.Mac/DialogBackend.cs index a33cf9cd..c50c012b 100644 --- a/Xwt.XamMac/Xwt.Mac/DialogBackend.cs +++ b/Xwt.XamMac/Xwt.Mac/DialogBackend.cs @@ -169,6 +169,13 @@ namespace Xwt.Mac { Visible = true; modalSessionRunning = true; + + NSWindow nsParent = parent.Window as NSWindow; + if (nsParent != null && nsParent.IsVisible) + { + nsParent.AddChildWindow(this, NSWindowOrderingMode.Above); + } + Util.CenterWindow(this, nsParent); NSApplication.SharedApplication.RunModalForWindow (this); } diff --git a/Xwt.XamMac/Xwt.Mac/Util.cs b/Xwt.XamMac/Xwt.Mac/Util.cs index 3f6f75dd..6093bcda 100644 --- a/Xwt.XamMac/Xwt.Mac/Util.cs +++ b/Xwt.XamMac/Xwt.Mac/Util.cs @@ -108,6 +108,20 @@ namespace Xwt.Mac v.Frame = new CGRect ((nfloat)rect.X, y, (nfloat)rect.Width, (nfloat)rect.Height); } + public static void CenterWindow(NSWindow nsChild, NSWindow nsParent) + { + if (nsParent != null && nsParent.IsVisible) + { + int x = (int)(nsParent.Frame.Left + (nsParent.Frame.Width - nsChild.Frame.Width) / 2); + int y = (int)(nsParent.Frame.Top + (nsParent.Frame.Height - nsChild.Frame.Height) / 2); + nsChild.SetFrameOrigin(new CGPoint(x, y)); + } + else + { + nsChild.Center(); + } + } + public static Alignment ToAlignment (this NSTextAlignment align) { switch (align) { |