diff --git a/platform/platform-impl/src/com/intellij/ide/impl/ProjectUtil.java b/platform/platform-impl/src/com/intellij/ide/impl/ProjectUtil.java index ac0f7f9fb229..1edc42683aaa 100644 --- a/platform/platform-impl/src/com/intellij/ide/impl/ProjectUtil.java +++ b/platform/platform-impl/src/com/intellij/ide/impl/ProjectUtil.java @@ -11,6 +11,7 @@ import com.intellij.ide.util.PropertiesComponent; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.application.ApplicationNamesInfo; import com.intellij.openapi.application.ModalityState; +import com.intellij.openapi.application.TransactionGuard; import com.intellij.openapi.components.StorageScheme; import com.intellij.openapi.components.impl.stores.IProjectStore; import com.intellij.openapi.diagnostic.Logger; @@ -18,6 +19,7 @@ import com.intellij.openapi.project.Project; import com.intellij.openapi.project.ProjectManager; import com.intellij.openapi.project.ex.ProjectManagerEx; import com.intellij.openapi.ui.Messages; +import com.intellij.openapi.util.Ref; import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.util.io.FileUtilRt; import com.intellij.openapi.util.text.StringUtil; @@ -181,14 +183,17 @@ public class ProjectUtil { } } - try { - return ProjectManager.getInstance().loadAndOpenProject(path); - } - catch (Exception e) { - Messages.showMessageDialog(IdeBundle.message("error.cannot.load.project", e.getMessage()), - IdeBundle.message("title.cannot.load.project"), Messages.getErrorIcon()); - } - return null; + Ref result = new Ref<>(); + TransactionGuard.getInstance().submitTransactionAndWait(() -> { + try { + result.set(ProjectManager.getInstance().loadAndOpenProject(path)); + } + catch (Exception e) { + Messages.showMessageDialog(IdeBundle.message("error.cannot.load.project", e.getMessage()), + IdeBundle.message("title.cannot.load.project"), Messages.getErrorIcon()); + } + }); + return result.get(); } public static boolean confirmLoadingFromRemotePath(@NotNull String path,