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 = (int)view.RunModal(); } else { ret = 0; NSApplication.SharedApplication.InvokeOnMainThread(delegate { view.BeginSheet(window, new MacModal(), new Selector("alertDidEnd:returnCode:contextInfo:"), IntPtr.Zero); ret = (int)NSApplication.SharedApplication.RunModalForWindow(window); }); } } else { ret = (int)view.RunModal(); } return(ret); }