Пример #1
0
        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);
        }
Пример #2
0
        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);
        }