diff --git a/src/vs/workbench/contrib/notebook/browser/notebookEditorWidget.ts b/src/vs/workbench/contrib/notebook/browser/notebookEditorWidget.ts index fcb7381a4516..5c528f360f6d 100644 --- a/src/vs/workbench/contrib/notebook/browser/notebookEditorWidget.ts +++ b/src/vs/workbench/contrib/notebook/browser/notebookEditorWidget.ts @@ -864,7 +864,7 @@ export class NotebookEditorWidget extends Disposable implements INotebookEditor return; } - this._webview?.updateViewScrollTop(-e.scrollTop, []); + this._webview?.updateViewScrollTop(-e.scrollTop, true, []); this._webviewTransparentCover!.style.top = `${e.scrollTop}px`; })); @@ -912,7 +912,7 @@ export class NotebookEditorWidget extends Disposable implements INotebookEditor removedItems.forEach(output => this._webview?.removeInset(output)); if (updateItems.length) { - this._webview?.updateViewScrollTop(-scrollTop, updateItems); + this._webview?.updateViewScrollTop(-scrollTop, false, updateItems); } } }); @@ -1535,7 +1535,7 @@ export class NotebookEditorWidget extends Disposable implements INotebookEditor const cellTop = this._list?.getAbsoluteTopOfElement(cell) || 0; const scrollTop = this._list?.scrollTop || 0; - this._webview!.updateViewScrollTop(-scrollTop, [{ cell: cell, output: output, cellTop: cellTop }]); + this._webview!.updateViewScrollTop(-scrollTop, true, [{ cell: cell, output: output, cellTop: cellTop }]); } } diff --git a/src/vs/workbench/contrib/notebook/browser/view/renderers/backLayerWebView.ts b/src/vs/workbench/contrib/notebook/browser/view/renderers/backLayerWebView.ts index 900f69a380ac..7f37bd88b208 100644 --- a/src/vs/workbench/contrib/notebook/browser/view/renderers/backLayerWebView.ts +++ b/src/vs/workbench/contrib/notebook/browser/view/renderers/backLayerWebView.ts @@ -107,6 +107,7 @@ export interface IContentWidgetTopRequest { export interface IViewScrollTopRequestMessage { type: 'view-scroll'; top?: number; + forceDisplay: boolean; widgets: IContentWidgetTopRequest[]; version: number; } @@ -591,7 +592,7 @@ ${loaderJs} return true; } - updateViewScrollTop(top: number, items: { cell: CodeCellViewModel, output: IProcessedOutput, cellTop: number }[]) { + updateViewScrollTop(top: number, forceDisplay: boolean, items: { cell: CodeCellViewModel, output: IProcessedOutput, cellTop: number }[]) { if (this._disposed) { return; } @@ -616,6 +617,7 @@ ${loaderJs} top, type: 'view-scroll', version: version++, + forceDisplay, widgets: widgets }); } diff --git a/src/vs/workbench/contrib/notebook/browser/view/renderers/webviewPreloads.ts b/src/vs/workbench/contrib/notebook/browser/view/renderers/webviewPreloads.ts index b1c43e6d4ffc..7cb5b349f20b 100644 --- a/src/vs/workbench/contrib/notebook/browser/view/renderers/webviewPreloads.ts +++ b/src/vs/workbench/contrib/notebook/browser/view/renderers/webviewPreloads.ts @@ -413,7 +413,9 @@ function webviewPreloads() { for (let i = 0; i < event.data.widgets.length; i++) { const widget = document.getElementById(event.data.widgets[i].id)!; widget.style.top = event.data.widgets[i].top + 'px'; - widget.parentElement!.style.display = 'block'; + if (event.data.forceDisplay) { + widget.parentElement!.style.display = 'block'; + } } break; }