Initialize OSX OpenFileHandler in invokeAndWait

This commit is contained in:
SiboVG 2022-06-15 22:00:14 +02:00
parent d7946bd070
commit 076d7caf5c
2 changed files with 19 additions and 1 deletions

View File

@ -6,6 +6,7 @@ import java.awt.desktop.OpenFilesEvent;
import java.awt.desktop.OpenFilesHandler;
import java.awt.desktop.PreferencesHandler;
import java.awt.desktop.QuitHandler;
import java.lang.reflect.InvocationTargetException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -92,7 +93,6 @@ final class OSXSetup {
// Set handlers
osxDesktop.setAboutHandler(ABOUT_HANDLER);
osxDesktop.setOpenFileHandler(OPEN_FILE_HANDLER);
osxDesktop.setPreferencesHandler(PREFERENCES_HANDLER);
osxDesktop.setQuitHandler(QUIT_HANDLER);
@ -115,4 +115,20 @@ final class OSXSetup {
}
}
/**
* Sets up the open file handler, which handles file association on macOS.
*/
public static void setupOSXOpenFileHandler() {
if (SystemInfo.getPlatform() != Platform.MAC_OS) {
log.warn("Attempting to set up OSX file handler on non-MAC_OS");
}
final Desktop osxDesktop = Desktop.getDesktop();
if (osxDesktop == null) {
// Application is null: Something is wrong, give up on OS setup
throw new NullPointerException("com.apple.eawt.Application.getApplication() returned NULL. "
+ "Aborting OSX UI Setup.");
}
osxDesktop.setOpenFileHandler(OPEN_FILE_HANDLER);
}
}

View File

@ -85,6 +85,8 @@ public class SwingStartup {
SwingUtilities.invokeAndWait(new Runnable() {
@Override
public void run() {
// Set up the OSX file open handler here so that it can handle files that are opened when OR is not yet running.
OSXSetup.setupOSXOpenFileHandler();
runner.runInEDT(args);
}
});