21 #include "../../SDL_internal.h" 23 #if SDL_VIDEO_DRIVER_COCOA 30 @interface SDLMessageBoxPresenter : NSObject {
36 - (
void) alertDidEnd:(NSAlert *)alert returnCode:(NSInteger)returnCode contextInfo:(
void *)contextInfo;
39 @implementation SDLMessageBoxPresenter
57 - (
void)showAlert:(NSAlert*)alert
60 #ifdef MAC_OS_X_VERSION_10_9 61 if ([alert respondsToSelector:
@selector(beginSheetModalForWindow:completionHandler:)]) {
62 [alert beginSheetModalForWindow:nswindow completionHandler:^(NSModalResponse returnCode) {
68 #if MAC_OS_X_VERSION_MIN_REQUIRED < 1090 69 [alert beginSheetModalForWindow:nswindow modalDelegate:self didEndSelector:@selector(alertDidEnd:returnCode:contextInfo:) contextInfo:nil];
80 clicked = [alert runModal];
84 - (
void) alertDidEnd:(NSAlert *)alert returnCode:(NSInteger)returnCode contextInfo:(
void *)contextInfo
99 NSAlert* alert = [[[NSAlert alloc] init] autorelease];
102 [alert setAlertStyle:NSAlertStyleCritical];
104 [alert setAlertStyle:NSAlertStyleWarning];
106 [alert setAlertStyle:NSAlertStyleInformational];
109 [alert setMessageText:[NSString stringWithUTF8String:messageboxdata->title]];
110 [alert setInformativeText:[NSString stringWithUTF8String:messageboxdata->message]];
114 for (i = 0; i < messageboxdata->
numbuttons; ++i) {
115 NSButton *
button = [alert addButtonWithTitle:[NSString stringWithUTF8String:buttons[i].text]];
117 [button setKeyEquivalent:@"\r"];
119 [button setKeyEquivalent:@"\033"];
121 [button setKeyEquivalent:@""];
125 SDLMessageBoxPresenter* presenter = [[[SDLMessageBoxPresenter alloc] initWithParentWindow:messageboxdata->window] autorelease];
127 [presenter performSelectorOnMainThread:@selector(showAlert:)
132 NSInteger clicked = presenter->clicked;
133 if (clicked >= NSAlertFirstButtonReturn) {
134 clicked -= NSAlertFirstButtonReturn;
135 *buttonid = buttons[clicked].
buttonid;
137 returnValue =
SDL_SetError(
"Did not get a valid `clicked button' id: %ld", (
long)clicked);
void Cocoa_RegisterApp(void)
const SDL_MessageBoxButtonData * buttons
MessageBox structure containing title, text, window, etc.
return Display return Display Bool Bool int int int return Display XEvent Bool(*) XPointer return Display return Display Drawable _Xconst char unsigned int unsigned int return Display Pixmap Pixmap XColor XColor unsigned int unsigned int return Display _Xconst char char int char return Display Visual unsigned int int int char unsigned int unsigned int in i)
SDL_PRINTF_FORMAT_STRING const char int SDL_PRINTF_FORMAT_STRING const char int SDL_PRINTF_FORMAT_STRING const char int SDL_PRINTF_FORMAT_STRING const char const char SDL_SCANF_FORMAT_STRING const char return SDL_ThreadFunction const char void return Uint32 return Uint32 void
The type used to identify a window.