public static int Run (NSAlert view, Control parent) { int ret; if (parent != null) { var window = parent.ControlObject as NSWindow; if (window == null && parent.ControlObject is NSView) window = ((NSView)parent.ControlObject).Window; if (window == null || !view.RespondsToSelector (new Selector ("beginSheetModalForWindow:modalDelegate:didEndSelector:contextInfo:"))) ret = view.RunModal (); else { ret = 0; NSApplication.SharedApplication.InvokeOnMainThread (delegate { view.BeginSheet (window, new MacModal (), new Selector ("alertDidEnd:returnCode:contextInfo:"), IntPtr.Zero); ret = NSApplication.SharedApplication.RunModalForWindow (window); }); } } else ret = view.RunModal (); return ret; }