diff --git a/app/src/processing/app/Base.java b/app/src/processing/app/Base.java index b118dbae256..62057e71b76 100644 --- a/app/src/processing/app/Base.java +++ b/app/src/processing/app/Base.java @@ -49,6 +49,7 @@ import processing.app.debug.TargetPackage; import processing.app.debug.TargetPlatform; import processing.app.helpers.*; +import processing.app.helpers.OSUtils; import processing.app.helpers.filefilters.OnlyDirs; import processing.app.helpers.filefilters.OnlyFilesWithExtension; import processing.app.javax.swing.filechooser.FileNameExtensionFilter; @@ -931,15 +932,14 @@ public boolean handleClose(Editor editor) { } if (editors.size() == 1) { - + editor.setVisible(false); + editors.remove(editor); handleQuit(); - } else { // More than one editor window open, // proceed with closing the current window. editor.setVisible(false); editor.dispose(); - editors.remove(editor); } return true; @@ -974,7 +974,7 @@ public boolean handleQuit() { // Save out the current prefs state PreferencesData.save(); - if (!OSUtils.hasMacOSStyleMenus()) { + if (!OSUtils.isMacOS()) { // If this was fired from the menu or an AppleEvent (the Finder), // then Mac OS X will send the terminate signal itself. System.exit(0); diff --git a/app/src/processing/app/macosx/ThinkDifferent.java b/app/src/processing/app/macosx/ThinkDifferent.java index e946bdc0fd7..590196ace95 100644 --- a/app/src/processing/app/macosx/ThinkDifferent.java +++ b/app/src/processing/app/macosx/ThinkDifferent.java @@ -23,6 +23,8 @@ package processing.app.macosx; import com.apple.eawt.*; +import com.apple.eawt.AppEvent.AppReOpenedEvent; + import processing.app.Base; import processing.app.Editor; @@ -45,6 +47,20 @@ public class ThinkDifferent { static public void init() { Application application = Application.getApplication(); + + application.addAppEventListener(new AppReOpenedListener() { + @Override + public void appReOpened(AppReOpenedEvent aroe) { + try { + if (Base.INSTANCE.getEditors().size() == 0) { + Base.INSTANCE.handleNew(); + } + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + }); application.setAboutHandler(new AboutHandler() { @Override public void handleAbout(AppEvent.AboutEvent aboutEvent) {