public virtual Task ShowModalAsync(Control parent) { var tcs = new TaskCompletionSource <bool>(); session = null; if (parent != null && parent.ParentWindow != null) { var nswindow = parent.ParentWindow.ControlObject as NSWindow; if (nswindow != null) { Control.ParentWindow = nswindow; } } Callback.OnShown(Widget, EventArgs.Empty); Widget.Closed += HandleClosed; if (DisplayMode.HasFlag(DialogDisplayMode.Attached)) { MacModal.BeginSheet(Widget, Control, out session, () => tcs.SetResult(true)); } else { Control.MakeKeyWindow(); Application.Instance.AsyncInvoke(() => { MacModal.Run(Widget, Control, out session); tcs.SetResult(true); }); } return(tcs.Task); }
public virtual Task ShowModalAsync() { var tcs = new TaskCompletionSource <bool>(); session = null; Widget.Closed += HandleClosed; if (DisplayMode.HasFlag(DialogDisplayMode.Attached) && Widget.Owner != null) { MacModal.BeginSheet(Widget, Control, Widget.Owner.ToNative(), out session, () => tcs.SetResult(true)); } else { Control.MakeKeyWindow(); Application.Instance.AsyncInvoke(() => { Application.Instance.AsyncInvoke(FireOnShown); // fire after dialog is shown MacModal.Run(Widget, Control, out session); tcs.SetResult(true); }); } return(tcs.Task); }