Fixed bug 5073 - SDL does not handle URL Schemes in MacOS

Jason

In iOS, URL Events trigger the DropFile event. I would also expect the same event to be fired on the macOS platform but this is not implemented at all in the AppDelegate.
This commit is contained in:
Sam Lantinga 2020-04-05 10:47:58 -07:00
parent 9525f9729a
commit dad73b1f0c
1 changed files with 14 additions and 0 deletions

View File

@ -248,10 +248,24 @@ static void Cocoa_DispatchEvent(NSEvent *theEvent)
[NSApp activateIgnoringOtherApps:YES];
}
[[NSAppleEventManager sharedAppleEventManager]
setEventHandler:self
andSelector:@selector(handleURLEvent:withReplyEvent:)
forEventClass:kInternetEventClass
andEventID:kAEGetURL];
/* If we call this before NSApp activation, macOS might print a complaint
* about ApplePersistenceIgnoreState. */
[SDLApplication registerUserDefaults];
}
- (void)handleURLEvent:(NSAppleEventDescriptor *)event withReplyEvent:(NSAppleEventDescriptor *)replyEvent
{
NSString* path = [[event paramDescriptorForKeyword:keyDirectObject] stringValue];
SDL_SendDropFile(NULL, [path UTF8String]);
SDL_SendDropComplete(NULL);
}
@end
static SDLAppDelegate *appDelegate = nil;