+#ifdef OSX
+ { // prepare to catch OX OpenFile signal, which will tell us the clicked file
+ GtkosxApplication *theApp = g_object_new(GTKOSX_TYPE_APPLICATION, NULL);
+ g_signal_connect(theApp, "NSApplicationOpenFile", G_CALLBACK(StartNewXBoard), NULL);
+ // we must call application ready before we can get the signal,
+ // and supply a (dummy) menu bar before that, to avoid problems with dual apples in it
+ gtkosx_application_set_menu_bar(theApp, GTK_MENU_SHELL(gtk_menu_bar_new()));
+ gtkosx_application_ready(theApp);
+ suppress = (argc == 1 || argc > 1 && argv[1][00] != '-'); // OSX sends signal even if name was already argv[1]!
+ if(argc == 1) { // called without args: OSX open-file signal might follow
+ static char *fakeArgv[3] = {NULL, clickedFile, NULL};
+ usleep(10000); // wait 10 msec (and hope this is long enough).
+ while(gtk_events_pending())
+ gtk_main_iteration(); // process all events that came in upto now
+ suppress = 0; // future open-file signals should start new instance
+ if(clickedFile[0]) { // we were sent an open-file signal with filename!
+ fakeArgv[0] = argv[0];
+ argc = 2; argv = fakeArgv; // fake that we were called as "xboard filename"
+ }
+ }
+ }
+#endif