diff --git a/src/vs/workbench/api/browser/mainThreadNotebook.ts b/src/vs/workbench/api/browser/mainThreadNotebook.ts index ea7df809c59..10b250eb958 100644 --- a/src/vs/workbench/api/browser/mainThreadNotebook.ts +++ b/src/vs/workbench/api/browser/mainThreadNotebook.ts @@ -44,7 +44,7 @@ export class MainThreadNotebookDocument extends Disposable { })); } - async applyEdit(modelVersionId: number, edits: ICellEditOperation[]): Promise { + async applyEdit(modelVersionId: number, edits: ICellEditOperation[], emitToExtHost: boolean): Promise { await this.notebookService.transformEditsOutputs(this.textModel, edits); return this._textModel.$applyEdit(modelVersionId, edits); } @@ -462,10 +462,10 @@ export class MainThreadNotebookController implements IMainNotebookController { mainthreadNotebook.textModel.languages = data.languages; mainthreadNotebook.textModel.metadata = data.metadata; - mainthreadNotebook.textModel.$applyEdit(mainthreadNotebook.textModel.versionId, [ + await mainthreadNotebook.applyEdit(mainthreadNotebook.textModel.versionId, [ { editType: CellEditType.Delete, count: mainthreadNotebook.textModel.cells.length, index: 0 }, { editType: CellEditType.Insert, index: 0, cells: data.cells } - ]); + ], true); } return mainthreadNotebook.textModel; } @@ -479,7 +479,7 @@ export class MainThreadNotebookController implements IMainNotebookController { document.textModel.languages = backup.languages; // restored from backup, update the text model without emitting any event to exthost - document.textModel.$applyEdit(document.textModel.versionId, [ + await document.applyEdit(document.textModel.versionId, [ { editType: CellEditType.Insert, index: 0, @@ -558,7 +558,7 @@ export class MainThreadNotebookController implements IMainNotebookController { let mainthreadNotebook = this._mapping.get(URI.from(resource).toString()); if (mainthreadNotebook) { - return await mainthreadNotebook.applyEdit(modelVersionId, edits); + return await mainthreadNotebook.applyEdit(modelVersionId, edits, true); } return false; diff --git a/src/vs/workbench/contrib/notebook/browser/notebookEditorWidget.ts b/src/vs/workbench/contrib/notebook/browser/notebookEditorWidget.ts index b5b18792bba..3500286ab5f 100644 --- a/src/vs/workbench/contrib/notebook/browser/notebookEditorWidget.ts +++ b/src/vs/workbench/contrib/notebook/browser/notebookEditorWidget.ts @@ -527,6 +527,10 @@ export class NotebookEditorWidget extends Disposable implements INotebookEditor this.localStore.add(this.list!.onDidChangeContentHeight(() => { DOM.scheduleAtNextAnimationFrame(() => { + if (this._isDisposed) { + return; + } + const scrollTop = this.list?.scrollTop || 0; const scrollHeight = this.list?.scrollHeight || 0; this.webview!.element.style.height = `${scrollHeight}px`; @@ -1330,7 +1334,7 @@ export class NotebookEditorWidget extends Disposable implements INotebookEditor } this.localStore.clear(); - this.list?.clear(); + this.list?.dispose(); this.webview?.dispose(); this.overlayContainer.remove();