From 30f6143a9a3b184859379ed9eede7a0e289baec9 Mon Sep 17 00:00:00 2001 From: rebornix Date: Fri, 27 Mar 2020 17:55:11 -0700 Subject: [PATCH] layout debouncing for output change. --- .../notebook/browser/view/renderers/codeCell.ts | 8 +++++++- .../notebook/browser/viewModel/codeCellViewModel.ts | 10 ++++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/vs/workbench/contrib/notebook/browser/view/renderers/codeCell.ts b/src/vs/workbench/contrib/notebook/browser/view/renderers/codeCell.ts index a54010e4550..bf26880de9f 100644 --- a/src/vs/workbench/contrib/notebook/browser/view/renderers/codeCell.ts +++ b/src/vs/workbench/contrib/notebook/browser/view/renderers/codeCell.ts @@ -16,6 +16,7 @@ import { INotebookService } from 'vs/workbench/contrib/notebook/browser/notebook import { CodeCellViewModel } from 'vs/workbench/contrib/notebook/browser/viewModel/codeCellViewModel'; import { EDITOR_TOP_PADDING, EDITOR_BOTTOM_PADDING } from 'vs/workbench/contrib/notebook/browser/constants'; import { IModeService } from 'vs/editor/common/services/modeService'; +import { debounce } from 'vs/base/common/decorators'; interface IMimeTypeRenderer extends IQuickPickItem { index: number; @@ -196,7 +197,7 @@ export class CodeCell extends Disposable { let editorHeight = templateData.editor!.getContentHeight(); viewCell.editorHeight = editorHeight; - this.relayoutCell(); + this.relayoutCellDebounced(); })); if (viewCell.outputs.length > 0) { @@ -382,6 +383,11 @@ export class CodeCell extends Disposable { this.notebookEditor.layoutNotebookCell(this.viewCell, this.viewCell.layoutInfo.totalHeight); } + @debounce(500) + relayoutCellDebounced() { + this.notebookEditor.layoutNotebookCell(this.viewCell, this.viewCell.layoutInfo.totalHeight); + } + dispose() { this.viewCell.detachTextEditor(); this.outputResizeListeners.forEach((value) => { diff --git a/src/vs/workbench/contrib/notebook/browser/viewModel/codeCellViewModel.ts b/src/vs/workbench/contrib/notebook/browser/viewModel/codeCellViewModel.ts index a4814b70bfd..cc56b7927a6 100644 --- a/src/vs/workbench/contrib/notebook/browser/viewModel/codeCellViewModel.ts +++ b/src/vs/workbench/contrib/notebook/browser/viewModel/codeCellViewModel.ts @@ -13,6 +13,7 @@ import { CellEditState, ICellViewModel, CellFindMatch, CodeCellLayoutChangeEvent import { CellKind, ICell, NotebookCellOutputsSplice } from 'vs/workbench/contrib/notebook/common/notebookCommon'; import { BaseCellViewModel } from './baseCellViewModel'; import { NotebookEventDispatcher } from 'vs/workbench/contrib/notebook/browser/viewModel/eventDispatcher'; +import { debounce } from 'vs/base/common/decorators'; export class CodeCellViewModel extends BaseCellViewModel implements ICellViewModel { cellKind: CellKind.Code = CellKind.Code; @@ -36,7 +37,7 @@ export class CodeCellViewModel extends BaseCellViewModel implements ICellViewMod private readonly _onDidChangeContent: Emitter = this._register(new Emitter()); public readonly onDidChangeContent: Event = this._onDidChangeContent.event; - protected readonly _onDidChangeLayout = new Emitter(); + protected readonly _onDidChangeLayout = new Emitter(); readonly onDidChangeLayout = this._onDidChangeLayout.event; private _editorHeight = 0; @@ -125,7 +126,12 @@ export class CodeCellViewModel extends BaseCellViewModel implements ICellViewMod state.totalHeight = true; } - this._onDidChangeLayout.fire(state); + this._fireOnDidChangeLayout(); + } + + @debounce(100) + private _fireOnDidChangeLayout() { + this._onDidChangeLayout.fire(); } hasDynamicHeight() { -- GitLab