提交 6b331314 编写于 作者: J Johannes Rieken

make sure local dispoables are disposed and cleared,...

make sure local dispoables are disposed and cleared, https://github.com/microsoft/vscode/issues/117675
上级 d13b7ff3
......@@ -42,14 +42,14 @@ class WebviewMarkdownRenderer extends Disposable implements IMarkdownRenderStrat
}
class BuiltinMarkdownRenderer extends Disposable implements IMarkdownRenderStrategy {
private localDisposables = new DisposableStore();
private readonly localDisposables = new DisposableStore();
constructor(
readonly notebookEditor: IActiveNotebookEditor,
readonly viewCell: MarkdownCellViewModel,
readonly container: HTMLElement,
readonly markdownContainer: HTMLElement,
readonly editorAccessor: () => CodeEditorWidget | null
private readonly notebookEditor: IActiveNotebookEditor,
private readonly viewCell: MarkdownCellViewModel,
private readonly container: HTMLElement,
private readonly markdownContainer: HTMLElement,
private readonly editorAccessor: () => CodeEditorWidget | null
) {
super();
......@@ -60,6 +60,11 @@ class BuiltinMarkdownRenderer extends Disposable implements IMarkdownRenderStrat
})).startObserving();
}
dispose(): void {
this.localDisposables.dispose();
super.dispose();
}
update(): void {
const markdownRenderer = this.viewCell.getMarkdownRenderer();
......@@ -74,6 +79,7 @@ class BuiltinMarkdownRenderer extends Disposable implements IMarkdownRenderStrat
this.relayoutCell();
} else {
// first time, readonly mode
this.localDisposables.clear();
this.localDisposables.add(markdownRenderer.onDidRenderAsync(() => {
this.viewCell.renderedMarkdownHeight = this.container.clientHeight;
this.relayoutCell();
......@@ -136,12 +142,10 @@ export class StatefulMarkdownCell extends Disposable {
}
this._register(this.renderStrategy);
this._register(this.localDisposables);
this._register(toDisposable(() => renderedEditors.delete(this.viewCell)));
this._register(viewCell.onDidChangeState((e) => {
if (e.editStateChanged) {
this.localDisposables.clear();
this.viewUpdate();
} else if (e.contentChanged) {
this.viewUpdate();
......@@ -256,6 +260,12 @@ export class StatefulMarkdownCell extends Disposable {
updatePlaceholder();
}
dispose() {
this.localDisposables.dispose();
this.viewCell.detachTextEditor();
super.dispose();
}
private viewUpdate(): void {
if (this.viewCell.metadata?.inputCollapsed) {
this.viewUpdateCollapsed();
......@@ -426,6 +436,9 @@ export class StatefulMarkdownCell extends Disposable {
}
private bindEditorListeners(editor: CodeEditorWidget) {
this.localDisposables.clear();
this.localDisposables.add(editor.onDidContentSizeChange(e => {
const viewLayout = editor.getLayoutInfo();
......@@ -473,9 +486,4 @@ export class StatefulMarkdownCell extends Disposable {
updateFocusMode();
}
dispose() {
this.viewCell.detachTextEditor();
super.dispose();
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册