Bläddra i källkod

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.
Sam Lantinga 5 år sedan
förälder
incheckning
dad73b1f0c
1 ändrade filer med 14 tillägg och 0 borttagningar
  1. 14 0
      src/video/cocoa/SDL_cocoaevents.m

+ 14 - 0
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;