mirror of
https://github.com/Ryujinx/SDL.git
synced 2025-01-10 19:35:31 +00:00
MessageBoxes attached to a window in macOS should use modal APIs and not use a poll/sleep pattern on the main thread. Sleeping the main thread makes the NSWindow message loop sluggish and interferes with external applications that need to send messages to that window, such as VoiceOver.
This commit is contained in:
parent
c83428475d
commit
dfc56cfc0e
|
@ -32,8 +32,7 @@
|
|||
NSInteger clicked;
|
||||
NSWindow *nswindow;
|
||||
}
|
||||
- (id) initWithParentWindow:(SDL_Window *)window;
|
||||
- (void) alertDidEnd:(NSAlert *)alert returnCode:(NSInteger)returnCode contextInfo:(void *)contextInfo;
|
||||
- (id)initWithParentWindow:(SDL_Window *)window;
|
||||
@end
|
||||
|
||||
@implementation SDLMessageBoxPresenter
|
||||
|
@ -57,35 +56,16 @@
|
|||
- (void)showAlert:(NSAlert*)alert
|
||||
{
|
||||
if (nswindow) {
|
||||
#ifdef MAC_OS_X_VERSION_10_9
|
||||
if ([alert respondsToSelector:@selector(beginSheetModalForWindow:completionHandler:)]) {
|
||||
[alert beginSheetModalForWindow:nswindow completionHandler:^(NSModalResponse returnCode) {
|
||||
self->clicked = returnCode;
|
||||
}];
|
||||
} else
|
||||
#endif
|
||||
{
|
||||
#if MAC_OS_X_VERSION_MIN_REQUIRED < 1090
|
||||
[alert beginSheetModalForWindow:nswindow modalDelegate:self didEndSelector:@selector(alertDidEnd:returnCode:contextInfo:) contextInfo:nil];
|
||||
#endif
|
||||
}
|
||||
|
||||
while (clicked < 0) {
|
||||
SDL_PumpEvents();
|
||||
SDL_Delay(100);
|
||||
}
|
||||
|
||||
[alert beginSheetModalForWindow:nswindow
|
||||
completionHandler:^(NSModalResponse returnCode) {
|
||||
[NSApp stopModalWithCode:returnCode];
|
||||
}];
|
||||
clicked = [NSApp runModalForWindow:nswindow];
|
||||
nswindow = nil;
|
||||
} else {
|
||||
clicked = [alert runModal];
|
||||
}
|
||||
}
|
||||
|
||||
- (void) alertDidEnd:(NSAlert *)alert returnCode:(NSInteger)returnCode contextInfo:(void *)contextInfo
|
||||
{
|
||||
clicked = returnCode;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
|
||||
|
|
Loading…
Reference in a new issue