mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-143449 Editor leak on closing all projects
After-review ROLLBACK
This commit is contained in:
@@ -17,12 +17,9 @@ package com.intellij.ui;
|
||||
|
||||
import com.intellij.openapi.editor.Document;
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.openapi.editor.EditorFactory;
|
||||
import com.intellij.openapi.editor.ex.EditorEx;
|
||||
import com.intellij.openapi.fileTypes.FileType;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.project.ProjectManager;
|
||||
import com.intellij.openapi.project.ProjectManagerAdapter;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
@@ -37,21 +34,11 @@ public class EditorComboBoxEditor implements ComboBoxEditor{
|
||||
private final EditorTextField myTextField;
|
||||
@NonNls protected static final String NAME = "ComboBox.textField";
|
||||
|
||||
public EditorComboBoxEditor(final Project project, FileType fileType) {
|
||||
public EditorComboBoxEditor(Project project, FileType fileType) {
|
||||
myTextField = new ComboboxEditorTextField((Document)null, project, fileType) {
|
||||
@Override
|
||||
protected EditorEx createEditor() {
|
||||
final EditorEx editor = super.createEditor();
|
||||
ProjectManagerAdapter adapter = new ProjectManagerAdapter() {
|
||||
@Override
|
||||
public void projectClosing(Project project) {
|
||||
if (!editor.isDisposed()) {
|
||||
EditorFactory.getInstance().releaseEditor(editor);
|
||||
}
|
||||
}
|
||||
};
|
||||
ProjectManager.getInstance().addProjectManagerListener(adapter, project);
|
||||
|
||||
EditorEx editor = super.createEditor();
|
||||
onEditorCreate(editor);
|
||||
return editor;
|
||||
}
|
||||
|
||||
@@ -314,7 +314,7 @@ public class EditorTextField extends NonOpaquePanel implements DocumentListener,
|
||||
}
|
||||
|
||||
void releaseEditor(@NotNull final Editor editor) {
|
||||
if (myProject != null && !myProject.isDisposed() && myIsViewer) {
|
||||
if (myProject != null && myIsViewer) {
|
||||
final PsiFile psiFile = PsiDocumentManager.getInstance(myProject).getPsiFile(editor.getDocument());
|
||||
if (psiFile != null) {
|
||||
DaemonCodeAnalyzer.getInstance(myProject).setHighlightingEnabled(psiFile, true);
|
||||
|
||||
-15
@@ -18,8 +18,6 @@ package com.intellij.xdebugger.impl.breakpoints.ui;
|
||||
import com.intellij.openapi.Disposable;
|
||||
import com.intellij.openapi.components.ServiceManager;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.project.ProjectManager;
|
||||
import com.intellij.openapi.project.ProjectManagerAdapter;
|
||||
import com.intellij.openapi.ui.popup.Balloon;
|
||||
import com.intellij.openapi.util.Disposer;
|
||||
import com.intellij.xdebugger.impl.breakpoints.XBreakpointUtil;
|
||||
@@ -63,11 +61,6 @@ public class BreakpointsDialogFactory {
|
||||
if (myDialogShowing != null) {
|
||||
return;
|
||||
}
|
||||
final Disposable disposable = new Disposable() {
|
||||
@Override
|
||||
public void dispose() {
|
||||
}
|
||||
};
|
||||
|
||||
final BreakpointsDialog dialog = new BreakpointsDialog(myProject, initialBreakpoint != null ? initialBreakpoint : myBreakpoint, XBreakpointUtil.collectPanelProviders()) {
|
||||
@Override
|
||||
@@ -79,16 +72,8 @@ public class BreakpointsDialogFactory {
|
||||
myDialogShowing = null;
|
||||
|
||||
super.dispose();
|
||||
Disposer.dispose(disposable);
|
||||
}
|
||||
};
|
||||
ProjectManagerAdapter adapter = new ProjectManagerAdapter() {
|
||||
@Override
|
||||
public void projectClosing(Project project) {
|
||||
dialog.dispose();
|
||||
}
|
||||
};
|
||||
ProjectManager.getInstance().addProjectManagerListener(adapter, disposable);
|
||||
|
||||
if (myBalloonToHide != null) {
|
||||
if (!myBalloonToHide.isDisposed()) {
|
||||
|
||||
Reference in New Issue
Block a user