diff --git a/src/video/cocoa/SDL_cocoaevents.m b/src/video/cocoa/SDL_cocoaevents.m index 0de74df31..1cc24b480 100644 --- a/src/video/cocoa/SDL_cocoaevents.m +++ b/src/video/cocoa/SDL_cocoaevents.m @@ -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;