diff --git a/src/vs/workbench/contrib/notebook/browser/contrib/coreActions.ts b/src/vs/workbench/contrib/notebook/browser/contrib/coreActions.ts index 9c3fde449ff8..c6abbab53140 100644 --- a/src/vs/workbench/contrib/notebook/browser/contrib/coreActions.ts +++ b/src/vs/workbench/contrib/notebook/browser/contrib/coreActions.ts @@ -1497,3 +1497,16 @@ registerAction2(class extends NotebookCellAction { context.notebookEditor.viewModel!.notebookDocument.changeCellMetadata(context.cell.handle, { inputCollapsed: false }); } }); + +registerAction2(class extends NotebookCellAction { + constructor() { + super({ + id: 'notebook.inspectLayout', + title: localize('notebookActions.inspectLayout', "Inspect Layout") + }); + } + + async runWithContext(accessor: ServicesAccessor, context: INotebookCellActionContext): Promise { + context.notebookEditor.viewModel!.inspectLayout(); + } +}); 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 fe9f7eda38b1..900f69a380ac 100644 --- a/src/vs/workbench/contrib/notebook/browser/view/renderers/backLayerWebView.ts +++ b/src/vs/workbench/contrib/notebook/browser/view/renderers/backLayerWebView.ts @@ -344,6 +344,13 @@ export class BackLayerWebView extends Disposable { return; } + const cell = this.insetMapping.get(output)!.cell; + + const currCell = this.notebookEditor.viewModel?.viewCells.find(vc => vc.handle === cell.handle); + if (currCell !== cell && currCell !== undefined) { + this.insetMapping.get(output)!.cell = currCell as CodeCellViewModel; + } + return { cell: this.insetMapping.get(output)!.cell, output }; } 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 f2f4a217b4f0..b1c43e6d4ffc 100644 --- a/src/vs/workbench/contrib/notebook/browser/view/renderers/webviewPreloads.ts +++ b/src/vs/workbench/contrib/notebook/browser/view/renderers/webviewPreloads.ts @@ -449,6 +449,15 @@ function webviewPreloads() { if (output) { output.parentElement!.style.display = 'block'; output.style.top = top + 'px'; + + vscode.postMessage({ + __vscode_notebook_message: true, + type: 'dimension', + id: outputId, + data: { + height: output.clientHeight + } + }); } }); break; diff --git a/src/vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel.ts b/src/vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel.ts index b7496c4d3d24..00ab695e9675 100644 --- a/src/vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel.ts +++ b/src/vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel.ts @@ -349,6 +349,16 @@ export class NotebookViewModel extends Disposable implements EditorFoldingStateD }); } + inspectLayout() { + console.log('--- notebook ---\n'); + console.log(this.layoutInfo); + console.log('--- cells ---'); + this.viewCells.forEach(cell => { + console.log(`--- cell: ${cell.handle} ---\n`); + console.log((cell as (CodeCellViewModel | MarkdownCellViewModel)).layoutInfo); + }); + } + setFocus(focused: boolean) { this._focused = focused; }