diff --git a/platform/lang-impl/src/com/intellij/find/EditorSearchSession.java b/platform/lang-impl/src/com/intellij/find/EditorSearchSession.java index d8223c371359..3bcaffaed9e8 100644 --- a/platform/lang-impl/src/com/intellij/find/EditorSearchSession.java +++ b/platform/lang-impl/src/com/intellij/find/EditorSearchSession.java @@ -20,17 +20,21 @@ import com.intellij.find.editorHeaderActions.*; import com.intellij.find.impl.livePreview.LivePreviewController; import com.intellij.find.impl.livePreview.SearchResults; import com.intellij.ide.ui.UISettings; +import com.intellij.openapi.Disposable; import com.intellij.openapi.actionSystem.*; import com.intellij.openapi.actionSystem.ex.CustomComponentAction; import com.intellij.openapi.actionSystem.ex.DefaultCustomComponentAction; import com.intellij.openapi.application.ApplicationBundle; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.editor.Editor; +import com.intellij.openapi.editor.EditorFactory; +import com.intellij.openapi.editor.event.EditorFactoryAdapter; +import com.intellij.openapi.editor.event.EditorFactoryEvent; import com.intellij.openapi.editor.event.SelectionEvent; import com.intellij.openapi.editor.event.SelectionListener; import com.intellij.openapi.project.DumbAwareAction; import com.intellij.openapi.project.Project; -import com.intellij.openapi.util.BooleanGetter; +import com.intellij.openapi.util.Disposer; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.ui.components.labels.LinkLabel; @@ -77,6 +81,8 @@ public class EditorSearchSession implements SearchSession, } public EditorSearchSession(@NotNull final Editor editor, Project project, FindModel findModel) { + assert !editor.isDisposed(); + myClickToHighlightLabel.setVisible(false); myFindModel = findModel; @@ -157,6 +163,17 @@ public class EditorSearchSession implements SearchSession, initLivePreview(); } updateMultiLineStateIfNeed(); + + Disposable disposable = Disposer.newDisposable(EditorSearchSession.class.getName()); + EditorFactory.getInstance().addEditorFactoryListener(new EditorFactoryAdapter() { + @Override + public void editorReleased(@NotNull EditorFactoryEvent event) { + if (event.getEditor() == myEditor) { + Disposer.dispose(disposable); + myLivePreviewController.dispose(); + } + } + }, disposable); } @Nullable