mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
mem leak: renderer keeps file
This commit is contained in:
+2
-1
@@ -29,6 +29,7 @@ import com.intellij.openapi.editor.ex.EditorMarkupModel;
|
||||
import com.intellij.openapi.editor.ex.MarkupModelEx;
|
||||
import com.intellij.openapi.editor.ex.RangeHighlighterEx;
|
||||
import com.intellij.openapi.editor.impl.DocumentMarkupModel;
|
||||
import com.intellij.openapi.editor.impl.EditorImpl;
|
||||
import com.intellij.openapi.editor.impl.EditorMarkupModelImpl;
|
||||
import com.intellij.openapi.editor.impl.event.MarkupModelListener;
|
||||
import com.intellij.openapi.editor.markup.ErrorStripeRenderer;
|
||||
@@ -123,7 +124,7 @@ public class TrafficLightRenderer implements ErrorStripeRenderer, Disposable {
|
||||
}
|
||||
else {
|
||||
renderer = new TrafficLightRenderer(project, document, file);
|
||||
Disposer.register(project, (Disposable)renderer);
|
||||
Disposer.register(((EditorImpl)editorMarkupModel.getEditor()).getDisposable(), (Disposable)renderer);
|
||||
editorMarkupModel.setErrorStripeRenderer(renderer);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -25,6 +25,7 @@ import com.intellij.concurrency.JobScheduler;
|
||||
import com.intellij.diagnostic.LogMessageEx;
|
||||
import com.intellij.ide.*;
|
||||
import com.intellij.ide.dnd.DnDManager;
|
||||
import com.intellij.openapi.Disposable;
|
||||
import com.intellij.openapi.actionSystem.ActionManager;
|
||||
import com.intellij.openapi.actionSystem.DataContext;
|
||||
import com.intellij.openapi.actionSystem.IdeActions;
|
||||
@@ -283,6 +284,7 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi
|
||||
private boolean myPaintSelection;
|
||||
|
||||
private final EditorSizeAdjustmentStrategy mySizeAdjustmentStrategy = new EditorSizeAdjustmentStrategy();
|
||||
private final Disposable myDisposable = Disposer.newDisposable();
|
||||
|
||||
static {
|
||||
ourCaretBlinkingCommand = new RepaintCursorCommand();
|
||||
@@ -683,6 +685,7 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi
|
||||
if (myConnection != null) {
|
||||
myConnection.disconnect();
|
||||
}
|
||||
Disposer.dispose(myDisposable);
|
||||
}
|
||||
|
||||
private void clearCaretThread() {
|
||||
@@ -1539,6 +1542,10 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi
|
||||
myScrollToCaret = scrollToCaret;
|
||||
}
|
||||
|
||||
public Disposable getDisposable() {
|
||||
return myDisposable;
|
||||
}
|
||||
|
||||
private static int countLineFeeds(CharSequence c) {
|
||||
return StringUtil.countNewLines(c);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user