From 2b998217159ba400917c76807cfeaed0546e9609 Mon Sep 17 00:00:00 2001 From: "Gregory.Shrago" Date: Thu, 24 Apr 2014 22:05:02 +0400 Subject: [PATCH] suppress project loading cancellation if in NonCancellableSection --- .../openapi/project/impl/ProjectManagerImpl.java | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/openapi/project/impl/ProjectManagerImpl.java b/platform/platform-impl/src/com/intellij/openapi/project/impl/ProjectManagerImpl.java index 7068d5f22108..a44b511f3e4c 100644 --- a/platform/platform-impl/src/com/intellij/openapi/project/impl/ProjectManagerImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/project/impl/ProjectManagerImpl.java @@ -37,10 +37,7 @@ import com.intellij.openapi.components.impl.stores.StorageUtil; import com.intellij.openapi.components.impl.stores.XmlElementStorage; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.fileEditor.FileDocumentManager; -import com.intellij.openapi.progress.ProcessCanceledException; -import com.intellij.openapi.progress.ProgressIndicator; -import com.intellij.openapi.progress.ProgressManager; -import com.intellij.openapi.progress.Task; +import com.intellij.openapi.progress.*; import com.intellij.openapi.progress.util.ProgressWindow; import com.intellij.openapi.project.Project; import com.intellij.openapi.project.ProjectBundle; @@ -447,7 +444,7 @@ public class ProjectManagerImpl extends ProjectManagerEx implements NamedJDOMExt } }); } - }, ProjectBundle.message("project.load.progress"), true, project); + }, ProjectBundle.message("project.load.progress"), canCancelProjectLoading(), project); if (!ok) { closeProject(project, false, false, true); @@ -472,6 +469,11 @@ public class ProjectManagerImpl extends ProjectManagerEx implements NamedJDOMExt return true; } + private static boolean canCancelProjectLoading() { + ProgressIndicator indicator = ProgressIndicatorProvider.getGlobalProgressIndicator(); + return !(indicator instanceof NonCancelableSection); + } + private void cacheOpenProjects() { myOpenProjectsArrayCache = myOpenProjects.toArray(new Project[myOpenProjects.size()]); } @@ -580,7 +582,7 @@ public class ProjectManagerImpl extends ProjectManagerEx implements NamedJDOMExt initProject(project, null); return project; } - }, ProjectBundle.message("project.load.progress"), true, project); + }, ProjectBundle.message("project.load.progress"), canCancelProjectLoading(), project); } catch (StateStorageException e) { throw new IOException(e);