mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-101768 Avoid memory leak in 'editor tabs: none' mode
This commit is contained in:
@@ -405,6 +405,11 @@ public abstract class EditorComposite implements Disposable {
|
||||
}
|
||||
|
||||
public void dispose() {
|
||||
for (FileEditor editor : myEditors) {
|
||||
if (!Disposer.isDisposed(editor)) {
|
||||
Disposer.dispose(editor);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static class TopBottomPanel extends JPanel {
|
||||
|
||||
+6
@@ -719,6 +719,12 @@ public class FileEditorManagerImpl extends FileEditorManagerEx implements Projec
|
||||
providers = newSelectedComposite.getProviders();
|
||||
}
|
||||
else {
|
||||
if (UISettings.getInstance().EDITOR_TAB_PLACEMENT == UISettings.TABS_NONE) {
|
||||
for (EditorWithProviderComposite composite : window.getEditors()) {
|
||||
Disposer.dispose(composite);
|
||||
}
|
||||
}
|
||||
|
||||
// File is not opened yet. In this case we have to create editors
|
||||
// and select the created EditorComposite.
|
||||
final FileEditorProviderManager editorProviderManager = FileEditorProviderManager.getInstance();
|
||||
|
||||
+12
-4
@@ -23,7 +23,10 @@ import com.intellij.openapi.editor.Document;
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.openapi.editor.EditorFactory;
|
||||
import com.intellij.openapi.editor.colors.EditorColorsManager;
|
||||
import com.intellij.openapi.editor.event.*;
|
||||
import com.intellij.openapi.editor.event.DocumentAdapter;
|
||||
import com.intellij.openapi.editor.event.DocumentEvent;
|
||||
import com.intellij.openapi.editor.event.EditorMouseEvent;
|
||||
import com.intellij.openapi.editor.event.EditorMouseEventArea;
|
||||
import com.intellij.openapi.editor.ex.EditorEx;
|
||||
import com.intellij.openapi.editor.ex.EditorMarkupModel;
|
||||
import com.intellij.openapi.editor.highlighter.EditorHighlighter;
|
||||
@@ -59,7 +62,7 @@ import java.beans.PropertyChangeListener;
|
||||
* @author Anton Katilin
|
||||
* @author Vladimir Kondratyev
|
||||
*/
|
||||
class TextEditorComponent extends JBLoadingPanel implements DataProvider{
|
||||
class TextEditorComponent extends JBLoadingPanel implements DataProvider {
|
||||
private static final Logger LOG = Logger.getInstance("#com.intellij.openapi.fileEditor.impl.text.TextEditorComponent");
|
||||
|
||||
private final Project myProject;
|
||||
@@ -160,14 +163,19 @@ class TextEditorComponent extends JBLoadingPanel implements DataProvider{
|
||||
Editor getEditor(){
|
||||
return myEditor;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return created editor. This editor should be released by {@link #disposeEditor(Editor) }
|
||||
* method.
|
||||
*/
|
||||
@NotNull
|
||||
private Editor createEditor(){
|
||||
Editor editor = EditorFactory.getInstance().createEditor(myDocument, myProject);
|
||||
EditorFactory editorFactory = EditorFactory.getInstance();
|
||||
Editor[] editors = editorFactory.getEditors(myDocument);
|
||||
if (editors.length == 1) {
|
||||
return editors[0];
|
||||
}
|
||||
final Editor editor = editorFactory.createEditor(myDocument, myProject);
|
||||
((EditorMarkupModel) editor.getMarkupModel()).setErrorStripeVisible(true);
|
||||
EditorHighlighter highlighter = EditorHighlighterFactory.getInstance().createEditorHighlighter(myFile, EditorColorsManager.getInstance().getGlobalScheme(), myProject);
|
||||
((EditorEx) editor).setHighlighter(highlighter);
|
||||
|
||||
Reference in New Issue
Block a user