Register a few more disposables in notebooks
This commit is contained in:
parent
de9cc71487
commit
62bfac1e18
|
@ -5,7 +5,7 @@
|
|||
|
||||
import * as DOM from 'vs/base/browser/dom';
|
||||
import { Delayer } from 'vs/base/common/async';
|
||||
import { Disposable } from 'vs/base/common/lifecycle';
|
||||
import { Disposable, MutableDisposable } from 'vs/base/common/lifecycle';
|
||||
import * as platform from 'vs/base/common/platform';
|
||||
import { BaseCellRenderTemplate, expandCellRangesWithHiddenCells, ICellViewModel, INotebookCellList, INotebookEditor } from 'vs/workbench/contrib/notebook/browser/notebookBrowser';
|
||||
import { cloneNotebookCellTextModel } from 'vs/workbench/contrib/notebook/common/model/notebookCellTextModel';
|
||||
|
@ -37,7 +37,9 @@ export class CellDragAndDropController extends Disposable {
|
|||
private list!: INotebookCellList;
|
||||
|
||||
private isScrolling = false;
|
||||
private scrollingDelayer: Delayer<void>;
|
||||
private readonly scrollingDelayer: Delayer<void>;
|
||||
|
||||
private readonly listOnWillScrollListener = this._register(new MutableDisposable());
|
||||
|
||||
constructor(
|
||||
private readonly notebookEditor: INotebookEditor,
|
||||
|
@ -75,13 +77,13 @@ export class CellDragAndDropController extends Disposable {
|
|||
this.onCellDragLeave(event);
|
||||
});
|
||||
|
||||
this.scrollingDelayer = new Delayer(200);
|
||||
this.scrollingDelayer = this._register(new Delayer(200));
|
||||
}
|
||||
|
||||
setList(value: INotebookCellList) {
|
||||
this.list = value;
|
||||
|
||||
this.list.onWillScroll(e => {
|
||||
this.listOnWillScrollListener.value = this.list.onWillScroll(e => {
|
||||
if (!e.scrollTopChanged) {
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -166,7 +166,7 @@ export class NotebookTextModel extends Disposable implements INotebookTextModel
|
|||
readonly onWillAddRemoveCells = this._onWillAddRemoveCells.event;
|
||||
readonly onDidChangeContent = this._onDidChangeContent.event;
|
||||
private _cellhandlePool: number = 0;
|
||||
private _cellListeners: Map<number, IDisposable> = new Map();
|
||||
private readonly _cellListeners: Map<number, IDisposable> = new Map();
|
||||
private _cells: NotebookCellTextModel[] = [];
|
||||
|
||||
metadata: NotebookDocumentMetadata = {};
|
||||
|
@ -340,7 +340,10 @@ export class NotebookTextModel extends Disposable implements INotebookTextModel
|
|||
override dispose() {
|
||||
this._onWillDispose.fire();
|
||||
this._undoService.removeElements(this.uri);
|
||||
|
||||
dispose(this._cellListeners.values());
|
||||
this._cellListeners.clear();
|
||||
|
||||
dispose(this._cells);
|
||||
super.dispose();
|
||||
}
|
||||
|
|
|
@ -25,7 +25,7 @@ import { bufferToReadable, bufferToStream, streamToBuffer, VSBuffer, VSBufferRea
|
|||
import { assertType } from 'vs/base/common/types';
|
||||
import { IUntitledTextEditorService } from 'vs/workbench/services/untitled/common/untitledTextEditorService';
|
||||
import { StoredFileWorkingCopyState, IStoredFileWorkingCopy, IStoredFileWorkingCopyModel, IStoredFileWorkingCopyModelContentChangedEvent, IStoredFileWorkingCopyModelFactory } from 'vs/workbench/services/workingCopy/common/storedFileWorkingCopy';
|
||||
import { DisposableStore, IDisposable } from 'vs/base/common/lifecycle';
|
||||
import { Disposable, DisposableStore } from 'vs/base/common/lifecycle';
|
||||
import { canceled } from 'vs/base/common/errors';
|
||||
import { NotebookEditorInput } from 'vs/workbench/contrib/notebook/common/notebookEditorInput';
|
||||
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
|
||||
|
@ -561,21 +561,22 @@ export class SimpleNotebookEditorModel extends EditorModel implements INotebookE
|
|||
}
|
||||
}
|
||||
|
||||
export class NotebookFileWorkingCopyModel implements IStoredFileWorkingCopyModel, IUntitledFileWorkingCopyModel {
|
||||
|
||||
private readonly _onDidChangeContent = new Emitter<IStoredFileWorkingCopyModelContentChangedEvent & IUntitledFileWorkingCopyModelContentChangedEvent>();
|
||||
private readonly _changeListener: IDisposable;
|
||||
export class NotebookFileWorkingCopyModel extends Disposable implements IStoredFileWorkingCopyModel, IUntitledFileWorkingCopyModel {
|
||||
|
||||
private readonly _onDidChangeContent = this._register(new Emitter<IStoredFileWorkingCopyModelContentChangedEvent & IUntitledFileWorkingCopyModelContentChangedEvent>());
|
||||
readonly onDidChangeContent = this._onDidChangeContent.event;
|
||||
|
||||
readonly onWillDispose: Event<void>;
|
||||
|
||||
constructor(
|
||||
private readonly _notebookModel: NotebookTextModel,
|
||||
private readonly _notebookSerializer: INotebookSerializer
|
||||
) {
|
||||
super();
|
||||
|
||||
this.onWillDispose = _notebookModel.onWillDispose.bind(_notebookModel);
|
||||
|
||||
this._changeListener = _notebookModel.onDidChangeContent(e => {
|
||||
this._register(_notebookModel.onDidChangeContent(e => {
|
||||
for (const rawEvent of e.rawEvents) {
|
||||
if (rawEvent.kind === NotebookCellsChangeType.Initialize) {
|
||||
continue;
|
||||
|
@ -590,13 +591,12 @@ export class NotebookFileWorkingCopyModel implements IStoredFileWorkingCopyModel
|
|||
});
|
||||
break;
|
||||
}
|
||||
});
|
||||
}));
|
||||
}
|
||||
|
||||
dispose(): void {
|
||||
this._changeListener.dispose();
|
||||
this._onDidChangeContent.dispose();
|
||||
override dispose(): void {
|
||||
this._notebookModel.dispose();
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
get notebookModel() {
|
||||
|
|
Loading…
Reference in a new issue