Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/xwt.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Xwt.XamMac/Xwt.Mac/DialogBackend.cs7
-rw-r--r--Xwt.XamMac/Xwt.Mac/Util.cs14
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) {