From ed3bf70fceccdac031aea2ab27a6eb513b381259 Mon Sep 17 00:00:00 2001 From: Eugene Zhuravlev Date: Wed, 9 Jul 2014 12:35:17 +0200 Subject: [PATCH] split 'force' flag into two different ones: 'force' and 'exitConfirmed', so that now 'force==true' guarantees application shutdown; (fixes also IDEA-127009) --- .../compiler/ant/GenerateAntApplication.java | 2 +- .../com/intellij/mock/MockApplicationEx.java | 4 ++-- .../openapi/application/ex/ApplicationEx.java | 4 ++-- .../codeInspection/InspectionApplication.java | 2 +- .../ide/ui/search/TraverseUIStarter.java | 2 +- .../ide/plugins/PluginManagerMain.java | 2 +- .../application/impl/ApplicationImpl.java | 18 +++++++++--------- 7 files changed, 17 insertions(+), 17 deletions(-) diff --git a/java/compiler/impl/src/com/intellij/compiler/ant/GenerateAntApplication.java b/java/compiler/impl/src/com/intellij/compiler/ant/GenerateAntApplication.java index b8a27b7818dc..5a957a28c2d3 100644 --- a/java/compiler/impl/src/com/intellij/compiler/ant/GenerateAntApplication.java +++ b/java/compiler/impl/src/com/intellij/compiler/ant/GenerateAntApplication.java @@ -61,7 +61,7 @@ public class GenerateAntApplication { GenerateAntApplication.LOG.error(e); } finally { - application.exit(true); + application.exit(true, true); } } }); diff --git a/platform/core-impl/src/com/intellij/mock/MockApplicationEx.java b/platform/core-impl/src/com/intellij/mock/MockApplicationEx.java index 60ae5417620b..7415e0d66fad 100644 --- a/platform/core-impl/src/com/intellij/mock/MockApplicationEx.java +++ b/platform/core-impl/src/com/intellij/mock/MockApplicationEx.java @@ -53,11 +53,11 @@ public class MockApplicationEx extends MockApplication implements ApplicationEx } @Override - public void exit(boolean force) { + public void exit(boolean force, boolean exitConfirmed) { } @Override - public void restart(boolean force) { + public void restart(boolean exitConfirmed) { } @Override diff --git a/platform/core-impl/src/com/intellij/openapi/application/ex/ApplicationEx.java b/platform/core-impl/src/com/intellij/openapi/application/ex/ApplicationEx.java index acb83f1fe2fd..6270497a90a6 100644 --- a/platform/core-impl/src/com/intellij/openapi/application/ex/ApplicationEx.java +++ b/platform/core-impl/src/com/intellij/openapi/application/ex/ApplicationEx.java @@ -61,9 +61,9 @@ public interface ApplicationEx extends Application { boolean isDoNotSave(); //force exit - void exit(boolean force); + void exit(boolean force, boolean exitConfirmed); - void restart(boolean force); + void restart(boolean exitConfirmed); /** * Runs modal process. For internal use only, see {@link Task} diff --git a/platform/lang-impl/src/com/intellij/codeInspection/InspectionApplication.java b/platform/lang-impl/src/com/intellij/codeInspection/InspectionApplication.java index 391232cd2857..86cbe6f1d6b7 100644 --- a/platform/lang-impl/src/com/intellij/codeInspection/InspectionApplication.java +++ b/platform/lang-impl/src/com/intellij/codeInspection/InspectionApplication.java @@ -105,7 +105,7 @@ public class InspectionApplication { LOG.error(e); } finally { - if (myErrorCodeRequired) application.exit(true); + if (myErrorCodeRequired) application.exit(true, true); } } }); diff --git a/platform/lang-impl/src/com/intellij/ide/ui/search/TraverseUIStarter.java b/platform/lang-impl/src/com/intellij/ide/ui/search/TraverseUIStarter.java index b1c1e25e978c..eb22b72eb810 100644 --- a/platform/lang-impl/src/com/intellij/ide/ui/search/TraverseUIStarter.java +++ b/platform/lang-impl/src/com/intellij/ide/ui/search/TraverseUIStarter.java @@ -129,7 +129,7 @@ public class TraverseUIStarter implements ApplicationStarter { System.out.println("Searchable options index builder completed"); - ((ApplicationEx)ApplicationManager.getApplication()).exit(true); + ((ApplicationEx)ApplicationManager.getApplication()).exit(true, true); } private static void processFileTemplates(Element configurableElement) { diff --git a/platform/platform-impl/src/com/intellij/ide/plugins/PluginManagerMain.java b/platform/platform-impl/src/com/intellij/ide/plugins/PluginManagerMain.java index 49b20d27a585..a60350b516d1 100644 --- a/platform/platform-impl/src/com/intellij/ide/plugins/PluginManagerMain.java +++ b/platform/platform-impl/src/com/intellij/ide/plugins/PluginManagerMain.java @@ -663,7 +663,7 @@ public abstract class PluginManagerMain implements Disposable { app.restart(true); } else { - app.exit(true); + app.exit(false, true); } } }).notify(project); diff --git a/platform/platform-impl/src/com/intellij/openapi/application/impl/ApplicationImpl.java b/platform/platform-impl/src/com/intellij/openapi/application/impl/ApplicationImpl.java index 308d5dbb1835..7c8acbc4c25c 100644 --- a/platform/platform-impl/src/com/intellij/openapi/application/impl/ApplicationImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/application/impl/ApplicationImpl.java @@ -767,12 +767,12 @@ public class ApplicationImpl extends PlatformComponentManagerImpl implements App @Override public void exit() { - exit(false); + exit(false, false); } @Override - public void exit(final boolean force) { - exit(force, true, false); + public void exit(boolean force, final boolean exitConfirmed) { + exit(false, exitConfirmed, true, false); } @Override @@ -781,8 +781,8 @@ public class ApplicationImpl extends PlatformComponentManagerImpl implements App } @Override - public void restart(boolean force) { - exit(force, true, true); + public void restart(boolean exitConfirmed) { + exit(false, exitConfirmed, true, true); } /* @@ -796,7 +796,7 @@ public class ApplicationImpl extends PlatformComponentManagerImpl implements App */ private static volatile boolean exiting = false; - public void exit(final boolean force, final boolean allowListenersToCancel, final boolean restart) { + public void exit(final boolean force, final boolean exitConfirmed, final boolean allowListenersToCancel, final boolean restart) { if (exiting) return; exiting = true; @@ -808,7 +808,7 @@ public class ApplicationImpl extends PlatformComponentManagerImpl implements App Runnable runnable = new Runnable() { @Override public void run() { - if (!confirmExitIfNeeded(force)) { + if (!force && !confirmExitIfNeeded(exitConfirmed)) { saveAll(); return; } @@ -857,9 +857,9 @@ public class ApplicationImpl extends PlatformComponentManagerImpl implements App return true; } - private static boolean confirmExitIfNeeded(boolean force) { + private static boolean confirmExitIfNeeded(boolean exitConfirmed) { final boolean hasUnsafeBgTasks = ProgressManager.getInstance().hasUnsafeProgressIndicator(); - if (force && !hasUnsafeBgTasks) { + if (exitConfirmed && !hasUnsafeBgTasks) { return true; }