Merge pull request #1449 from SiboVG/fix-macOS-file-association

Initialize OSX OpenFileHandler in invokeAndWait
This commit is contained in:
SiboVG 2022-06-15 22:03:43 +02:00 committed by GitHub
commit 9e73f6e4e2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 18 additions and 3 deletions

View File

@ -2,7 +2,6 @@ package net.sf.openrocket.startup;
import java.awt.*; import java.awt.*;
import java.awt.desktop.AboutHandler; import java.awt.desktop.AboutHandler;
import java.awt.desktop.OpenFilesEvent;
import java.awt.desktop.OpenFilesHandler; import java.awt.desktop.OpenFilesHandler;
import java.awt.desktop.PreferencesHandler; import java.awt.desktop.PreferencesHandler;
import java.awt.desktop.QuitHandler; import java.awt.desktop.QuitHandler;
@ -15,7 +14,6 @@ import net.sf.openrocket.arch.SystemInfo.Platform;
import net.sf.openrocket.gui.dialogs.AboutDialog; import net.sf.openrocket.gui.dialogs.AboutDialog;
import net.sf.openrocket.gui.dialogs.preferences.PreferencesDialog; import net.sf.openrocket.gui.dialogs.preferences.PreferencesDialog;
import net.sf.openrocket.gui.main.BasicFrame; import net.sf.openrocket.gui.main.BasicFrame;
import net.sf.openrocket.gui.main.MRUDesignFile;
import javax.swing.*; import javax.swing.*;
@ -92,7 +90,6 @@ final class OSXSetup {
// Set handlers // Set handlers
osxDesktop.setAboutHandler(ABOUT_HANDLER); osxDesktop.setAboutHandler(ABOUT_HANDLER);
osxDesktop.setOpenFileHandler(OPEN_FILE_HANDLER);
osxDesktop.setPreferencesHandler(PREFERENCES_HANDLER); osxDesktop.setPreferencesHandler(PREFERENCES_HANDLER);
osxDesktop.setQuitHandler(QUIT_HANDLER); osxDesktop.setQuitHandler(QUIT_HANDLER);
@ -115,4 +112,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() { SwingUtilities.invokeAndWait(new Runnable() {
@Override @Override
public void run() { 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); runner.runInEDT(args);
} }
}); });