From ac75ac530ee555c112c2dd8497abd0e5f6df7741 Mon Sep 17 00:00:00 2001 From: rebornix Date: Fri, 17 Apr 2020 10:50:32 -0700 Subject: [PATCH] :runner: fewer event emitters --- .../contrib/notebook/browser/notebookBrowser.ts | 2 ++ .../notebook/browser/view/renderers/markdownCell.ts | 12 ++++++++++-- .../notebook/browser/viewModel/codeCellViewModel.ts | 5 +---- .../browser/viewModel/markdownCellViewModel.ts | 10 ++-------- 4 files changed, 15 insertions(+), 14 deletions(-) diff --git a/src/vs/workbench/contrib/notebook/browser/notebookBrowser.ts b/src/vs/workbench/contrib/notebook/browser/notebookBrowser.ts index a3324c98df2..11be57c76fe 100644 --- a/src/vs/workbench/contrib/notebook/browser/notebookBrowser.ts +++ b/src/vs/workbench/contrib/notebook/browser/notebookBrowser.ts @@ -428,6 +428,8 @@ export interface CellViewModelStateChangeEvent { runStateChanged?: boolean; editStateChanged?: boolean; languageChanged?: boolean; + foldingStateChanged?: boolean; + contentChanged?: boolean; } /** diff --git a/src/vs/workbench/contrib/notebook/browser/view/renderers/markdownCell.ts b/src/vs/workbench/contrib/notebook/browser/view/renderers/markdownCell.ts index 4f8fd8dc74b..8ba6a7979e1 100644 --- a/src/vs/workbench/contrib/notebook/browser/view/renderers/markdownCell.ts +++ b/src/vs/workbench/contrib/notebook/browser/view/renderers/markdownCell.ts @@ -131,7 +131,11 @@ export class StatefullMarkdownCell extends Disposable { notebookEditor.layoutNotebookCell(viewCell, clientHeight); })); - this.localDisposables.add(viewCell.onDidChangeContent(() => { + this.localDisposables.add(viewCell.onDidChangeState((e) => { + if (!e.contentChanged) { + return; + } + this.markdownContainer.innerHTML = ''; let renderedHTML = viewCell.getHTML(); if (renderedHTML) { @@ -162,7 +166,11 @@ export class StatefullMarkdownCell extends Disposable { this.foldingState = viewCell.foldingState; this.setFoldingIndicator(); - this._register(viewCell.onDidChangeFoldingState(() => { + this._register(viewCell.onDidChangeState((e) => { + if (!e.foldingStateChanged) { + return; + } + const foldingState = viewCell.foldingState; if (foldingState !== this.foldingState) { diff --git a/src/vs/workbench/contrib/notebook/browser/viewModel/codeCellViewModel.ts b/src/vs/workbench/contrib/notebook/browser/viewModel/codeCellViewModel.ts index 297bc15519e..59aaf46a1ab 100644 --- a/src/vs/workbench/contrib/notebook/browser/viewModel/codeCellViewModel.ts +++ b/src/vs/workbench/contrib/notebook/browser/viewModel/codeCellViewModel.ts @@ -35,9 +35,6 @@ export class CodeCellViewModel extends BaseCellViewModel implements ICellViewMod return this.model.outputs; } - private readonly _onDidChangeContent: Emitter = this._register(new Emitter()); - public readonly onDidChangeContent: Event = this._onDidChangeContent.event; - protected readonly _onDidChangeLayout = new Emitter(); readonly onDidChangeLayout = this._onDidChangeLayout.event; @@ -191,7 +188,7 @@ export class CodeCellViewModel extends BaseCellViewModel implements ICellViewMod this._register(ref); this._register(this._textModel.onDidChangeContent(() => { this.model.contentChange(); - this._onDidChangeContent.fire(); + this._onDidChangeState.fire({ contentChanged: true }); })); } diff --git a/src/vs/workbench/contrib/notebook/browser/viewModel/markdownCellViewModel.ts b/src/vs/workbench/contrib/notebook/browser/viewModel/markdownCellViewModel.ts index 4c2ac7d6384..15ee0e38c2b 100644 --- a/src/vs/workbench/contrib/notebook/browser/viewModel/markdownCellViewModel.ts +++ b/src/vs/workbench/contrib/notebook/browser/viewModel/markdownCellViewModel.ts @@ -22,9 +22,6 @@ export class MarkdownCellViewModel extends BaseCellViewModel implements ICellVie cellKind: CellKind.Markdown = CellKind.Markdown; private _mdRenderer: MarkdownRenderer | null = null; private _html: HTMLElement | null = null; - private readonly _onDidChangeContent: Emitter = this._register(new Emitter()); - public readonly onDidChangeContent: Event = this._onDidChangeContent.event; - private _layoutInfo: MarkdownCellLayoutInfo; get layoutInfo() { @@ -42,9 +39,6 @@ export class MarkdownCellViewModel extends BaseCellViewModel implements ICellVie protected readonly _onDidChangeLayout = new Emitter(); readonly onDidChangeLayout = this._onDidChangeLayout.event; - protected readonly _onDidChangeFoldingState = new Emitter(); - readonly onDidChangeFoldingState = this._onDidChangeFoldingState.event; - get foldingState() { return this.foldingDelegate.getFoldingState(this); } @@ -74,7 +68,7 @@ export class MarkdownCellViewModel extends BaseCellViewModel implements ICellVie })); this._register(foldingDelegate.onDidFoldingRegionChanged(() => { - this._onDidChangeFoldingState.fire(); + this._onDidChangeState.fire({ foldingStateChanged: true }); })); } @@ -149,7 +143,7 @@ export class MarkdownCellViewModel extends BaseCellViewModel implements ICellVie this._register(this._textModel.onDidChangeContent(() => { this.model.contentChange(); this._html = null; - this._onDidChangeContent.fire(); + this._onDidChangeState.fire({ contentChanged: true }); })); } return this._textModel; -- GitLab