diff --git a/platform/platform-api/src/com/intellij/openapi/editor/markup/InspectionWidgetActionProvider.kt b/platform/platform-api/src/com/intellij/openapi/editor/markup/InspectionWidgetActionProvider.kt index cd17038dc736..5bda9ce05d72 100644 --- a/platform/platform-api/src/com/intellij/openapi/editor/markup/InspectionWidgetActionProvider.kt +++ b/platform/platform-api/src/com/intellij/openapi/editor/markup/InspectionWidgetActionProvider.kt @@ -4,6 +4,7 @@ package com.intellij.openapi.editor.markup import com.intellij.openapi.actionSystem.AnAction import com.intellij.openapi.editor.Editor import com.intellij.openapi.extensions.ExtensionPointName +import com.intellij.util.concurrency.annotations.RequiresEdt interface InspectionWidgetActionProvider { companion object { @@ -18,5 +19,6 @@ interface InspectionWidgetActionProvider { * * May return null if no action should be created for the given editor. */ + @RequiresEdt fun createAction(editor: Editor): AnAction? } \ No newline at end of file diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorMarkupModelImpl.java b/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorMarkupModelImpl.java index 7b720fc6ff49..62f3eb3b5013 100644 --- a/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorMarkupModelImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorMarkupModelImpl.java @@ -441,19 +441,23 @@ public final class EditorMarkupModelImpl extends MarkupModelImpl InspectionWidgetActionProvider.EP_NAME.addExtensionPointListener(new ExtensionPointListener<>() { @Override public void extensionAdded(@NotNull InspectionWidgetActionProvider extension, @NotNull PluginDescriptor pluginDescriptor) { - AnAction action = extension.createAction(myEditor); - if (action != null) { - extensionActions.put(extension, action); - addInspectionWidgetAction(action, null); - } + ApplicationManager.getApplication().invokeLater(() -> { + AnAction action = extension.createAction(myEditor); + if (action != null) { + extensionActions.put(extension, action); + addInspectionWidgetAction(action, null); + } + }); } @Override public void extensionRemoved(@NotNull InspectionWidgetActionProvider extension, @NotNull PluginDescriptor pluginDescriptor) { - AnAction action = extensionActions.remove(extension); - if (action != null) { - removeInspectionWidgetAction(action); - } + ApplicationManager.getApplication().invokeLater(() -> { + AnAction action = extensionActions.remove(extension); + if (action != null) { + removeInspectionWidgetAction(action); + } + }); } }, resourcesDisposable); }