Commits

Mathieu Virbel committed 05eb8d5

Add support for MacOSX OpenFile. This was done in SDL, but not in the pygame implementation. Use a similar approach that SDL 1.3 does, using SDL_USEREVENT + 0x1000 usercode + data1 for filename.

Comments (0)

Files changed (2)

         break;
 /* SDL_VIDEOEXPOSE and SDL_QUIT have no attributes */
     }
+    if (event->type == SDL_USEREVENT && event->user.code == 0x1000) {
+		insobj (dict, "filename", PyString_FromString(event->user.data1));
+		free(event->user.data1);
+		event->user.data1 = NULL;
+	}
     if (event->type >= SDL_USEREVENT && event->type < SDL_NUMEVENTS)
         insobj (dict, "code", PyInt_FromLong (event->user.code));
 

src/sdlmain_osx.m

 }
 @end
 
+@interface SDLApplicationDelegate : NSObject
+@end
+@implementation SDLApplicationDelegate
+- (BOOL)application:(NSApplication *)theApplication openFile:(NSString *)filename
+{
+    int posted;
+
+    /* Post the event, if desired */
+    posted = 0;
+	SDL_Event event;
+	event.type = SDL_USEREVENT;
+	event.user.code = 0x1000;
+	event.user.data1 = SDL_strdup([filename UTF8String]);
+	posted = (SDL_PushEvent(&event) > 0);
+    return (BOOL)(posted);
+}
+@end
+
 static void setApplicationMenu(void)
 {
     NSMenu *appleMenu;
 {
     char* icon_data = NULL;
     int data_len = 0;
+    SDLApplicationDelegate *sdlApplicationDelegate = NULL;
 
     NSAutoreleasePool	*pool = [[NSAutoreleasePool alloc] init];
 
     [NSApp activateIgnoringOtherApps:true];
 
     HasInstalledApplication = 1;
+
+    /* Create SDLApplicationDelegate and make it the app delegate */
+    sdlApplicationDelegate = [[SDLApplicationDelegate alloc] init];
+    [NSApp setDelegate:sdlApplicationDelegate];
     
 	Py_RETURN_TRUE;
 }
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.