Make sure we register some more emitters in notebooks
This ensures we clean these up on dispose
This commit is contained in:
parent
9db732867d
commit
f84c1c1821
|
@ -4,7 +4,7 @@
|
|||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import { Emitter, Event } from 'vs/base/common/event';
|
||||
import { DisposableStore } from 'vs/base/common/lifecycle';
|
||||
import { DisposableStore, IDisposable } from 'vs/base/common/lifecycle';
|
||||
import { TrackedRangeStickiness } from 'vs/editor/common/model';
|
||||
import { FoldingRegion, FoldingRegions } from 'vs/editor/contrib/folding/foldingRanges';
|
||||
import { IFoldingRangeData, sanitizeRanges } from 'vs/editor/contrib/folding/syntaxRangeProvider';
|
||||
|
@ -16,7 +16,7 @@ type RegionFilter = (r: FoldingRegion) => boolean;
|
|||
type RegionFilterWithLevel = (r: FoldingRegion, level: number) => boolean;
|
||||
|
||||
|
||||
export class FoldingModel {
|
||||
export class FoldingModel implements IDisposable {
|
||||
private _viewModel: NotebookViewModel | null = null;
|
||||
private readonly _viewModelStore = new DisposableStore();
|
||||
private _regions: FoldingRegions;
|
||||
|
|
|
@ -34,9 +34,9 @@ interface ILayoutInfoDelta extends ILayoutInfoDelta0 {
|
|||
export abstract class DiffElementViewModelBase extends Disposable {
|
||||
public metadataFoldingState: PropertyFoldingState;
|
||||
public outputFoldingState: PropertyFoldingState;
|
||||
protected _layoutInfoEmitter = new Emitter<CellDiffViewModelLayoutChangeEvent>();
|
||||
protected _layoutInfoEmitter = this._register(new Emitter<CellDiffViewModelLayoutChangeEvent>());
|
||||
onDidLayoutChange = this._layoutInfoEmitter.event;
|
||||
protected _stateChangeEmitter = new Emitter<{ renderOutput: boolean; }>();
|
||||
protected _stateChangeEmitter = this._register(new Emitter<{ renderOutput: boolean; }>());
|
||||
onDidStateChange = this._stateChangeEmitter.event;
|
||||
protected _layoutInfo!: IDiffElementLayoutInfo;
|
||||
|
||||
|
|
|
@ -69,9 +69,9 @@ export class DiffNestedCellViewModel extends Disposable implements IDiffNestedCe
|
|||
|
||||
protected _outputCollection: number[] = [];
|
||||
protected _outputsTop: PrefixSumComputer | null = null;
|
||||
protected readonly _onDidChangeOutputLayout = new Emitter<void>();
|
||||
readonly onDidChangeOutputLayout = this._onDidChangeOutputLayout.event;
|
||||
|
||||
protected readonly _onDidChangeOutputLayout = this._register(new Emitter<void>());
|
||||
readonly onDidChangeOutputLayout = this._onDidChangeOutputLayout.event;
|
||||
|
||||
constructor(
|
||||
readonly textModel: NotebookCellTextModel,
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import { Emitter } from 'vs/base/common/event';
|
||||
import { Disposable } from 'vs/base/common/lifecycle';
|
||||
import { IDiffElementLayoutInfo } from 'vs/workbench/contrib/notebook/browser/diff/notebookDiffEditorBrowser';
|
||||
import { NotebookLayoutChangeEvent, NotebookLayoutInfo } from 'vs/workbench/contrib/notebook/browser/notebookBrowser';
|
||||
|
||||
|
@ -32,14 +33,12 @@ export class NotebookCellLayoutChangedEvent {
|
|||
|
||||
export type NotebookDiffViewEvent = NotebookDiffLayoutChangedEvent | NotebookCellLayoutChangedEvent;
|
||||
|
||||
export class NotebookDiffEditorEventDispatcher {
|
||||
protected readonly _onDidChangeLayout = new Emitter<NotebookDiffLayoutChangedEvent>();
|
||||
export class NotebookDiffEditorEventDispatcher extends Disposable {
|
||||
protected readonly _onDidChangeLayout = this._register(new Emitter<NotebookDiffLayoutChangedEvent>());
|
||||
readonly onDidChangeLayout = this._onDidChangeLayout.event;
|
||||
protected readonly _onDidChangeCellLayout = new Emitter<NotebookCellLayoutChangedEvent>();
|
||||
readonly onDidChangeCellLayout = this._onDidChangeCellLayout.event;
|
||||
|
||||
constructor() {
|
||||
}
|
||||
protected readonly _onDidChangeCellLayout = this._register(new Emitter<NotebookCellLayoutChangedEvent>());
|
||||
readonly onDidChangeCellLayout = this._onDidChangeCellLayout.event;
|
||||
|
||||
emit(events: NotebookDiffViewEvent[]) {
|
||||
for (let i = 0, len = events.length; i < len; i++) {
|
||||
|
|
|
@ -73,7 +73,7 @@ export class NotebookTextDiffEditor extends EditorPane implements INotebookTextD
|
|||
private _revealFirst: boolean;
|
||||
private readonly _insetModifyQueueByOutputId = new SequencerByKey<string>();
|
||||
|
||||
protected _onDidDynamicOutputRendered = new Emitter<{ cell: IGenericCellViewModel, output: ICellOutputViewModel; }>();
|
||||
protected _onDidDynamicOutputRendered = this._register(new Emitter<{ cell: IGenericCellViewModel, output: ICellOutputViewModel; }>());
|
||||
onDidDynamicOutputRendered = this._onDidDynamicOutputRendered.event;
|
||||
|
||||
private _notebookOptions: NotebookOptions;
|
||||
|
|
|
@ -13,10 +13,10 @@ import { INotebookCellStatusBarItemList, INotebookCellStatusBarItemProvider } fr
|
|||
|
||||
export class NotebookCellStatusBarService extends Disposable implements INotebookCellStatusBarService {
|
||||
|
||||
private _onDidChangeProviders = new Emitter<void>();
|
||||
private _onDidChangeProviders = this._register(new Emitter<void>());
|
||||
readonly onDidChangeProviders: Event<void> = this._onDidChangeProviders.event;
|
||||
|
||||
private _onDidChangeItems = new Emitter<void>();
|
||||
private _onDidChangeItems = this._register(new Emitter<void>());
|
||||
readonly onDidChangeItems: Event<void> = this._onDidChangeItems.event;
|
||||
|
||||
private _providers: INotebookCellStatusBarItemProvider[] = [];
|
||||
|
|
|
@ -2469,7 +2469,7 @@ export class NotebookEditorWidget extends Disposable implements INotebookEditor
|
|||
|
||||
//#region --- webview IPC ----
|
||||
|
||||
private readonly _onDidReceiveMessage = new Emitter<INotebookWebviewMessage>();
|
||||
private readonly _onDidReceiveMessage = this._register(new Emitter<INotebookWebviewMessage>());
|
||||
|
||||
readonly onDidReceiveMessage: Event<INotebookWebviewMessage> = this._onDidReceiveMessage.event;
|
||||
|
||||
|
|
|
@ -4,12 +4,13 @@
|
|||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import { Emitter } from 'vs/base/common/event';
|
||||
import { Disposable } from 'vs/base/common/lifecycle';
|
||||
import { INotebookRendererMessagingService, IScopedRendererMessaging } from 'vs/workbench/contrib/notebook/common/notebookRendererMessagingService';
|
||||
import { IExtensionService } from 'vs/workbench/services/extensions/common/extensions';
|
||||
|
||||
type MessageToSend = { editorId: string; rendererId: string; message: unknown };
|
||||
|
||||
export class NotebookRendererMessagingService implements INotebookRendererMessagingService {
|
||||
export class NotebookRendererMessagingService extends Disposable implements INotebookRendererMessagingService {
|
||||
declare _serviceBrand: undefined;
|
||||
/**
|
||||
* Activation promises. Maps renderer IDs to a queue of messages that should
|
||||
|
@ -17,10 +18,14 @@ export class NotebookRendererMessagingService implements INotebookRendererMessag
|
|||
*/
|
||||
private readonly activations = new Map<string /* rendererId */, undefined | MessageToSend[]>();
|
||||
private readonly scopedMessaging = new Map</* editorId */ string, IScopedRendererMessaging>();
|
||||
private readonly postMessageEmitter = new Emitter<MessageToSend>();
|
||||
private readonly postMessageEmitter = this._register(new Emitter<MessageToSend>());
|
||||
public readonly onShouldPostMessage = this.postMessageEmitter.event;
|
||||
|
||||
constructor(@IExtensionService private readonly extensionService: IExtensionService) { }
|
||||
constructor(
|
||||
@IExtensionService private readonly extensionService: IExtensionService
|
||||
) {
|
||||
super();
|
||||
}
|
||||
|
||||
/** @inheritdoc */
|
||||
public receiveMessage(editorId: string | undefined, rendererId: string, message: unknown): Promise<boolean> {
|
||||
|
|
|
@ -46,7 +46,7 @@ export class CellEditorOptions extends Disposable {
|
|||
|
||||
private _value: IEditorOptions;
|
||||
private _lineNumbers: 'on' | 'off' | 'inherit' = 'inherit';
|
||||
private readonly _onDidChange = new Emitter<void>();
|
||||
private readonly _onDidChange = this._register(new Emitter<void>());
|
||||
readonly onDidChange: Event<void> = this._onDidChange.event;
|
||||
private _localDisposableStore = this._register(new DisposableStore());
|
||||
|
||||
|
@ -114,11 +114,6 @@ export class CellEditorOptions extends Disposable {
|
|||
return computed;
|
||||
}
|
||||
|
||||
override dispose(): void {
|
||||
this._onDidChange.dispose();
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
getValue(internalMetadata?: NotebookCellInternalMetadata): IEditorOptions {
|
||||
return {
|
||||
...this._value,
|
||||
|
|
|
@ -23,10 +23,10 @@ import { IUndoRedoService } from 'vs/platform/undoRedo/common/undoRedo';
|
|||
|
||||
export abstract class BaseCellViewModel extends Disposable {
|
||||
|
||||
protected readonly _onDidChangeEditorAttachState = new Emitter<void>();
|
||||
protected readonly _onDidChangeEditorAttachState = this._register(new Emitter<void>());
|
||||
// Do not merge this event with `onDidChangeState` as we are using `Event.once(onDidChangeEditorAttachState)` elsewhere.
|
||||
readonly onDidChangeEditorAttachState = this._onDidChangeEditorAttachState.event;
|
||||
protected readonly _onDidChangeState: Emitter<CellViewModelStateChangeEvent> = this._register(new Emitter<CellViewModelStateChangeEvent>());
|
||||
protected readonly _onDidChangeState = this._register(new Emitter<CellViewModelStateChangeEvent>());
|
||||
public readonly onDidChangeState: Event<CellViewModelStateChangeEvent> = this._onDidChangeState.event;
|
||||
|
||||
get handle() {
|
||||
|
@ -112,8 +112,10 @@ export abstract class BaseCellViewModel extends Disposable {
|
|||
private _cursorChangeListener: IDisposable | null = null;
|
||||
private _editorViewStates: editorCommon.ICodeEditorViewState | null = null;
|
||||
private _resolvedCellDecorations = new Map<string, INotebookCellDecorationOptions>();
|
||||
private _cellDecorationsChanged = new Emitter<{ added: INotebookCellDecorationOptions[], removed: INotebookCellDecorationOptions[] }>();
|
||||
|
||||
private readonly _cellDecorationsChanged = this._register(new Emitter<{ added: INotebookCellDecorationOptions[], removed: INotebookCellDecorationOptions[] }>());
|
||||
onCellDecorationsChanged: Event<{ added: INotebookCellDecorationOptions[], removed: INotebookCellDecorationOptions[] }> = this._cellDecorationsChanged.event;
|
||||
|
||||
private _resolvedDecorations = new Map<string, {
|
||||
id?: string;
|
||||
options: model.IModelDeltaDecoration;
|
||||
|
@ -121,7 +123,7 @@ export abstract class BaseCellViewModel extends Disposable {
|
|||
private _lastDecorationId: number = 0;
|
||||
|
||||
private _cellStatusBarItems = new Map<string, INotebookCellStatusBarItem>();
|
||||
private _onDidChangeCellStatusBarItems = new Emitter<void>();
|
||||
private readonly _onDidChangeCellStatusBarItems = this._register(new Emitter<void>());
|
||||
readonly onDidChangeCellStatusBarItems: Event<void> = this._onDidChangeCellStatusBarItems.event;
|
||||
private _lastStatusBarId: number = 0;
|
||||
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
import { Emitter } from 'vs/base/common/event';
|
||||
import { NotebookDocumentMetadata } from 'vs/workbench/contrib/notebook/common/notebookCommon';
|
||||
import { NotebookLayoutChangeEvent, NotebookLayoutInfo, CellViewModelStateChangeEvent, ICellViewModel } from 'vs/workbench/contrib/notebook/browser/notebookBrowser';
|
||||
import { Disposable } from 'vs/base/common/lifecycle';
|
||||
|
||||
export enum NotebookViewEventType {
|
||||
LayoutChanged = 1,
|
||||
|
@ -41,16 +42,15 @@ export class NotebookCellStateChangedEvent {
|
|||
|
||||
export type NotebookViewEvent = NotebookLayoutChangedEvent | NotebookMetadataChangedEvent | NotebookCellStateChangedEvent;
|
||||
|
||||
export class NotebookEventDispatcher {
|
||||
protected readonly _onDidChangeLayout = new Emitter<NotebookLayoutChangedEvent>();
|
||||
export class NotebookEventDispatcher extends Disposable {
|
||||
private readonly _onDidChangeLayout = this._register(new Emitter<NotebookLayoutChangedEvent>());
|
||||
readonly onDidChangeLayout = this._onDidChangeLayout.event;
|
||||
protected readonly _onDidChangeMetadata = new Emitter<NotebookMetadataChangedEvent>();
|
||||
readonly onDidChangeMetadata = this._onDidChangeMetadata.event;
|
||||
protected readonly _onDidChangeCellState = new Emitter<NotebookCellStateChangedEvent>();
|
||||
readonly onDidChangeCellState = this._onDidChangeCellState.event;
|
||||
|
||||
constructor() {
|
||||
}
|
||||
private readonly _onDidChangeMetadata = this._register(new Emitter<NotebookMetadataChangedEvent>());
|
||||
readonly onDidChangeMetadata = this._onDidChangeMetadata.event;
|
||||
|
||||
private readonly _onDidChangeCellState = this._register(new Emitter<NotebookCellStateChangedEvent>());
|
||||
readonly onDidChangeCellState = this._onDidChangeCellState.event;
|
||||
|
||||
emit(events: NotebookViewEvent[]) {
|
||||
for (let i = 0, len = events.length; i < len; i++) {
|
||||
|
|
|
@ -64,7 +64,7 @@ export class MarkupCellViewModel extends BaseCellViewModel implements ICellViewM
|
|||
throw new Error('MarkdownCellViewModel.editorHeight is write only');
|
||||
}
|
||||
|
||||
protected readonly _onDidChangeLayout = new Emitter<MarkdownCellLayoutChangeEvent>();
|
||||
protected readonly _onDidChangeLayout = this._register(new Emitter<MarkdownCellLayoutChangeEvent>());
|
||||
readonly onDidChangeLayout = this._onDidChangeLayout.event;
|
||||
|
||||
get foldingState() {
|
||||
|
@ -103,7 +103,7 @@ export class MarkupCellViewModel extends BaseCellViewModel implements ICellViewM
|
|||
return this.model.getHashValue();
|
||||
}
|
||||
|
||||
private readonly _onDidHideInput = new Emitter<void>();
|
||||
private readonly _onDidHideInput = this._register(new Emitter<void>());
|
||||
readonly onDidHideInput = this._onDidHideInput.event;
|
||||
|
||||
constructor(
|
||||
|
|
|
@ -18,19 +18,19 @@ import { NotebookCellOutputTextModel } from 'vs/workbench/contrib/notebook/commo
|
|||
import { CellInternalMetadataChangedEvent, CellKind, ICell, ICellOutput, IOutputDto, NotebookCellInternalMetadata, NotebookCellMetadata, NotebookCellOutputsSplice, TransientOptions } from 'vs/workbench/contrib/notebook/common/notebookCommon';
|
||||
|
||||
export class NotebookCellTextModel extends Disposable implements ICell {
|
||||
private _onDidChangeOutputs = new Emitter<NotebookCellOutputsSplice>();
|
||||
private readonly _onDidChangeOutputs = this._register(new Emitter<NotebookCellOutputsSplice>());
|
||||
onDidChangeOutputs: Event<NotebookCellOutputsSplice> = this._onDidChangeOutputs.event;
|
||||
|
||||
private _onDidChangeContent = new Emitter<'content' | 'language' | 'mime'>();
|
||||
private readonly _onDidChangeContent = this._register(new Emitter<'content' | 'language' | 'mime'>());
|
||||
onDidChangeContent: Event<'content' | 'language' | 'mime'> = this._onDidChangeContent.event;
|
||||
|
||||
private _onDidChangeMetadata = new Emitter<void>();
|
||||
private readonly _onDidChangeMetadata = this._register(new Emitter<void>());
|
||||
onDidChangeMetadata: Event<void> = this._onDidChangeMetadata.event;
|
||||
|
||||
private _onDidChangeInternalMetadata = new Emitter<CellInternalMetadataChangedEvent>();
|
||||
private readonly _onDidChangeInternalMetadata = this._register(new Emitter<CellInternalMetadataChangedEvent>());
|
||||
onDidChangeInternalMetadata: Event<CellInternalMetadataChangedEvent> = this._onDidChangeInternalMetadata.event;
|
||||
|
||||
private _onDidChangeLanguage = new Emitter<string>();
|
||||
private readonly _onDidChangeLanguage = this._register(new Emitter<string>());
|
||||
onDidChangeLanguage: Event<string> = this._onDidChangeLanguage.event;
|
||||
|
||||
private _outputs: NotebookCellOutputTextModel[];
|
||||
|
|
Loading…
Reference in a new issue