From ca1ed314c66eacd3484ea9fbf21f33cefeaada7f Mon Sep 17 00:00:00 2001 From: Sergey Simonchik Date: Wed, 25 Dec 2019 21:50:38 +0300 Subject: [PATCH] light edit: fix EA-220180 - assert: ActionManagerImpl. GitOrigin-RevId: c914550c3fa4fa61b7c642f9acd397f4b4408e2e --- .../ide/lightEdit/LightEditService.java | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/platform/platform-impl/src/com/intellij/ide/lightEdit/LightEditService.java b/platform/platform-impl/src/com/intellij/ide/lightEdit/LightEditService.java index 2b112eb00d4c..6ae5d54402b0 100644 --- a/platform/platform-impl/src/com/intellij/ide/lightEdit/LightEditService.java +++ b/platform/platform-impl/src/com/intellij/ide/lightEdit/LightEditService.java @@ -2,6 +2,7 @@ package com.intellij.ide.lightEdit; import com.intellij.openapi.Disposable; +import com.intellij.openapi.actionSystem.ActionManager; import com.intellij.openapi.application.ApplicationBundle; import com.intellij.openapi.application.ApplicationInfo; import com.intellij.openapi.application.ApplicationManager; @@ -17,6 +18,7 @@ import com.intellij.openapi.util.Disposer; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.openapi.wm.impl.welcomeScreen.WelcomeFrame; import com.intellij.util.ObjectUtils; +import com.intellij.util.concurrency.NonUrgentExecutor; import com.intellij.util.ui.update.UiNotifyConnector; import com.intellij.util.xmlb.XmlSerializerUtil; import org.jetbrains.annotations.NotNull; @@ -76,6 +78,25 @@ public class LightEditService implements Disposable, LightEditorListener, Persis } public void openFile(@NotNull VirtualFile file) { + doWhenActionManagerInitialized(() -> { + doOpenFile(file); + }); + } + + private static void doWhenActionManagerInitialized(@NotNull Runnable callback) { + ActionManager created = ApplicationManager.getApplication().getServiceIfCreated(ActionManager.class); + if (created == null) { + NonUrgentExecutor.getInstance().execute(() -> { + ActionManager.getInstance(); + ApplicationManager.getApplication().invokeLater(callback); + }); + } + else { + callback.run(); + } + } + + private void doOpenFile(@NotNull VirtualFile file) { showEditorWindow(); LightEditorInfo openEditorInfo = myEditorManager.findOpen(file); if (openEditorInfo == null) {