1
0
mirror of https://github.com/arduino/Arduino.git synced 2025-01-19 08:52:15 +01:00

[macOS] Modify behaviour when last editor gets closed

Don't call System.exit() but trust the ThinkDifferent handler
Handle reopen only if no editor is visible
Don't dispose last closing editor (so its toolbars are still in active state)
This commit is contained in:
Martino Facchin 2018-09-21 18:40:05 +02:00
parent c1d9c588b5
commit 36da22c086
2 changed files with 20 additions and 4 deletions

View File

@ -49,6 +49,7 @@ import processing.app.debug.TargetBoard;
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 class Base {
}
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 class Base {
// 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);

View File

@ -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) {