From 73f082e1f2f1d604163779036b9cb984ab3d44e5 Mon Sep 17 00:00:00 2001 From: Dmitry Batrak Date: Wed, 28 Sep 2016 14:28:13 +0300 Subject: [PATCH] Improve EditorUtil.disposeWithEditor logic for injected editor case --- .../src/com/intellij/openapi/editor/ex/util/EditorUtil.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/ex/util/EditorUtil.java b/platform/platform-impl/src/com/intellij/openapi/editor/ex/util/EditorUtil.java index 0affca5d0e00..768c285ad94b 100644 --- a/platform/platform-impl/src/com/intellij/openapi/editor/ex/util/EditorUtil.java +++ b/platform/platform-impl/src/com/intellij/openapi/editor/ex/util/EditorUtil.java @@ -18,6 +18,7 @@ package com.intellij.openapi.editor.ex.util; import com.intellij.diagnostic.Dumpable; import com.intellij.diagnostic.LogMessageEx; import com.intellij.ide.ui.UISettings; +import com.intellij.injected.editor.EditorWindow; import com.intellij.openapi.Disposable; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.application.Result; @@ -909,10 +910,13 @@ public final class EditorUtil { Disposer.dispose(disposable); return; } + // for injected editors disposal will happen only when host editor is disposed, + // but this seems to be the best we can do (there are no notifications on disposal of injected editor) + Editor hostEditor = editor instanceof EditorWindow ? ((EditorWindow)editor).getDelegate() : editor; EditorFactory.getInstance().addEditorFactoryListener(new EditorFactoryAdapter() { @Override public void editorReleased(@NotNull EditorFactoryEvent event) { - if (event.getEditor() == editor) { + if (event.getEditor() == hostEditor) { Disposer.dispose(disposable); } }