提交 c74bc68f 编写于 作者: M Matt Bierner

Hide markdown preview cells when they are folded

Fixes #116918
上级 6e08e452
......@@ -467,6 +467,7 @@ export interface INotebookEditor extends IEditor, ICommonNotebookEditor {
layoutNotebookCell(cell: ICellViewModel, height: number): Promise<void>;
createMarkdownPreview(cell: ICellViewModel): Promise<void>;
unhideMarkdownPreview(cell: ICellViewModel): Promise<void>;
hideMarkdownPreview(cell: ICellViewModel): Promise<void>;
removeMarkdownPreview(cell: ICellViewModel): Promise<void>;
......
......@@ -1990,6 +1990,16 @@ export class NotebookEditorWidget extends Disposable implements INotebookEditor
}
}
async unhideMarkdownPreview(cell: MarkdownCellViewModel) {
if (!this._webview) {
return;
}
await this._resolveWebview();
await this._webview?.unhideMarkdownPreview(cell.id);
}
async hideMarkdownPreview(cell: MarkdownCellViewModel) {
if (!this._webview) {
return;
......
......@@ -258,9 +258,13 @@ export interface IRemoveMarkdownMessage {
id: string;
}
export interface IHideMarkdownMessage {
type: 'hideMarkdownPreview',
type: 'hideMarkdownPreview';
id: string;
}
export interface IUnhideMarkdownMessage {
type: 'unhideMarkdownPreview';
id: string;
}
......@@ -311,6 +315,7 @@ export type ToWebviewMessage =
| IRemoveMarkdownMessage
| IShowMarkdownMessage
| IHideMarkdownMessage
| IUnhideMarkdownMessage
| IInitializeMarkdownMessage
| IViewScrollMarkdownRequestMessage;
......@@ -1020,6 +1025,17 @@ var requirejs = (function() {
});
}
async unhideMarkdownPreview(cellId: string,) {
if (this._disposed) {
return;
}
this._sendMessageToWebview({
type: 'unhideMarkdownPreview',
id: cellId
});
}
async removeMarkdownPreview(cellId: string,) {
if (this._disposed) {
return;
......
......@@ -52,6 +52,7 @@ import { CodiconActionViewItem, createAndFillInActionBarActionsWithVerticalSepar
import { ThemeIcon } from 'vs/platform/theme/common/themeService';
import { errorStateIcon, successStateIcon, unfoldIcon } from 'vs/workbench/contrib/notebook/browser/notebookIcons';
import { syncing } from 'vs/platform/theme/common/iconRegistry';
import { CellFoldingState } from 'vs/workbench/contrib/notebook/browser/contrib/fold/foldingModel';
const $ = DOM.$;
......@@ -539,6 +540,9 @@ export class MarkdownCellRenderer extends AbstractCellRenderer implements IListR
if (e.cellIsHoveredChanged) {
this.updateForHover(element, templateData);
}
if (e.foldingStateChanged) {
this.updateForFolding(element);
}
}));
// render toolbar first
......@@ -575,6 +579,14 @@ export class MarkdownCellRenderer extends AbstractCellRenderer implements IListR
templateData.container.classList.toggle('markdown-cell-hover', element.cellIsHovered);
}
private updateForFolding(element: MarkdownCellViewModel) {
if (element.foldingState === CellFoldingState.Collapsed) {
this.notebookEditor.hideMarkdownPreview(element);
} else {
this.notebookEditor.unhideMarkdownPreview(element);
}
}
disposeTemplate(templateData: MarkdownCellRenderTemplate): void {
templateData.disposables.clear();
}
......
......@@ -421,12 +421,21 @@ function webviewPreloads() {
case 'hideMarkdownPreview':
{
const data = event.data;
let cellContainer = document.getElementById(data.id);
const cellContainer = document.getElementById(data.id);
if (cellContainer) {
cellContainer.style.display = 'none';
}
}
break;
case 'unhideMarkdownPreview':
{
const data = event.data;
const cellContainer = document.getElementById(data.id);
if (cellContainer) {
cellContainer.style.display = '';
}
}
break;
case 'removeMarkdownPreview':
{
const data = event.data;
......
......@@ -321,8 +321,11 @@ export class TestNotebookEditor implements INotebookEditor {
createMarkdownPreview(cell: ICellViewModel): Promise<void> {
return Promise.resolve();
}
hideMarkdownPreview(cell: ICellViewModel): Promise<void> {
return Promise.resolve();
async unhideMarkdownPreview(cell: ICellViewModel): Promise<void> {
// noop
}
async hideMarkdownPreview(cell: ICellViewModel): Promise<void> {
// noop
}
removeMarkdownPreview(cell: ICellViewModel): Promise<void> {
return Promise.resolve();
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册