提交 360e4e4d 编写于 作者: M Matt Bierner

Use mutable disposable to avoid potential leaks

上级 55021e21
...@@ -8,7 +8,7 @@ import * as dom from 'vs/base/browser/dom'; ...@@ -8,7 +8,7 @@ import * as dom from 'vs/base/browser/dom';
import { CancellationToken } from 'vs/base/common/cancellation'; import { CancellationToken } from 'vs/base/common/cancellation';
import { Color, RGBA } from 'vs/base/common/color'; import { Color, RGBA } from 'vs/base/common/color';
import { IMarkdownString, MarkdownString, isEmptyMarkdownString, markedStringsEquals } from 'vs/base/common/htmlContent'; import { IMarkdownString, MarkdownString, isEmptyMarkdownString, markedStringsEquals } from 'vs/base/common/htmlContent';
import { Disposable, IDisposable, toDisposable, DisposableStore, combinedDisposable } from 'vs/base/common/lifecycle'; import { IDisposable, toDisposable, DisposableStore, combinedDisposable, MutableDisposable } from 'vs/base/common/lifecycle';
import { ICodeEditor } from 'vs/editor/browser/editorBrowser'; import { ICodeEditor } from 'vs/editor/browser/editorBrowser';
import { Position } from 'vs/editor/common/core/position'; import { Position } from 'vs/editor/common/core/position';
import { IRange, Range } from 'vs/editor/common/core/range'; import { IRange, Range } from 'vs/editor/common/core/range';
...@@ -204,7 +204,7 @@ export class ModesContentHoverWidget extends ContentHoverWidget { ...@@ -204,7 +204,7 @@ export class ModesContentHoverWidget extends ContentHoverWidget {
private _shouldFocus: boolean; private _shouldFocus: boolean;
private _colorPicker: ColorPickerWidget | null; private _colorPicker: ColorPickerWidget | null;
private renderDisposable: IDisposable = Disposable.None; private readonly renderDisposable = this._register(new MutableDisposable<IDisposable>());
constructor( constructor(
editor: ICodeEditor, editor: ICodeEditor,
...@@ -247,8 +247,6 @@ export class ModesContentHoverWidget extends ContentHoverWidget { ...@@ -247,8 +247,6 @@ export class ModesContentHoverWidget extends ContentHoverWidget {
} }
dispose(): void { dispose(): void {
this.renderDisposable.dispose();
this.renderDisposable = Disposable.None;
this._hoverOperation.cancel(); this._hoverOperation.cancel();
super.dispose(); super.dispose();
} }
...@@ -316,8 +314,7 @@ export class ModesContentHoverWidget extends ContentHoverWidget { ...@@ -316,8 +314,7 @@ export class ModesContentHoverWidget extends ContentHoverWidget {
this._isChangingDecorations = true; this._isChangingDecorations = true;
this._highlightDecorations = this._editor.deltaDecorations(this._highlightDecorations, []); this._highlightDecorations = this._editor.deltaDecorations(this._highlightDecorations, []);
this._isChangingDecorations = false; this._isChangingDecorations = false;
this.renderDisposable.dispose(); this.renderDisposable.clear();
this.renderDisposable = Disposable.None;
this._colorPicker = null; this._colorPicker = null;
} }
...@@ -440,7 +437,7 @@ export class ModesContentHoverWidget extends ContentHoverWidget { ...@@ -440,7 +437,7 @@ export class ModesContentHoverWidget extends ContentHoverWidget {
this.updateContents(fragment); this.updateContents(fragment);
this._colorPicker.layout(); this._colorPicker.layout();
this.renderDisposable = combinedDisposable(colorListener, colorChangeListener, widget, ...markdownDisposeables); this.renderDisposable.value = combinedDisposable(colorListener, colorChangeListener, widget, ...markdownDisposeables);
}); });
} else { } else {
if (msg instanceof MarkerHover) { if (msg instanceof MarkerHover) {
...@@ -558,7 +555,7 @@ export class ModesContentHoverWidget extends ContentHoverWidget { ...@@ -558,7 +555,7 @@ export class ModesContentHoverWidget extends ContentHoverWidget {
} }
})); }));
} }
this.renderDisposable = disposables; this.renderDisposable.value = disposables;
return hoverElement; return hoverElement;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册