Skip to content

Commit

Permalink
Add double-click to collapse
Browse files Browse the repository at this point in the history
  • Loading branch information
roblourens committed Mar 23, 2021
1 parent 4a83a80 commit fdc4f23
Showing 1 changed file with 24 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding';
import { INotificationService } from 'vs/platform/notification/common/notification';
import { BOTTOM_CELL_TOOLBAR_GAP, CELL_BOTTOM_MARGIN, CELL_TOP_MARGIN, EDITOR_BOTTOM_PADDING, EDITOR_BOTTOM_PADDING_WITHOUT_STATUSBAR, EDITOR_TOOLBAR_HEIGHT } from 'vs/workbench/contrib/notebook/browser/constants';
import { DeleteCellAction, INotebookCellActionContext } from 'vs/workbench/contrib/notebook/browser/contrib/coreActions';
import { BaseCellRenderTemplate, CellEditState, CodeCellRenderTemplate, EditorTopPaddingChangeEvent, EXPAND_CELL_CONTENT_COMMAND_ID, getEditorTopPadding, ICellViewModel, INotebookEditor, isCodeCellRenderTemplate, MarkdownCellRenderTemplate } from 'vs/workbench/contrib/notebook/browser/notebookBrowser';
import { BaseCellRenderTemplate, CellEditState, CodeCellLayoutInfo, CodeCellRenderTemplate, EditorTopPaddingChangeEvent, EXPAND_CELL_CONTENT_COMMAND_ID, getEditorTopPadding, ICellViewModel, INotebookEditor, isCodeCellRenderTemplate, MarkdownCellRenderTemplate } from 'vs/workbench/contrib/notebook/browser/notebookBrowser';
import { CellContextKeyManager } from 'vs/workbench/contrib/notebook/browser/view/renderers/cellContextKeys';
import { CellDragAndDropController, DRAGGING_CLASS } from 'vs/workbench/contrib/notebook/browser/view/renderers/cellDnd';
import { CellMenus } from 'vs/workbench/contrib/notebook/browser/view/renderers/cellMenus';
Expand Down Expand Up @@ -842,6 +842,7 @@ export class CodeCellRenderer extends AbstractCellRenderer implements IListRende

this.dndController.registerDragHandle(templateData, rootContainer, dragHandle, () => new CodeCellDragImageRenderer().getDragImage(templateData, templateData.editor, 'code'));

disposables.add(this.addDoubleClickCollapseHandler(templateData));
disposables.add(DOM.addDisposableListener(focusSinkElement, DOM.EventType.FOCUS, () => {
if (templateData.currentRenderedCell && (templateData.currentRenderedCell as CodeCellViewModel).outputsViewModels.length) {
this.notebookEditor.focusNotebookCell(templateData.currentRenderedCell, 'output');
Expand All @@ -853,6 +854,28 @@ export class CodeCellRenderer extends AbstractCellRenderer implements IListRende
return templateData;
}

private addDoubleClickCollapseHandler(templateData: CodeCellRenderTemplate): IDisposable {
return DOM.addDisposableListener(templateData.dragHandle, DOM.EventType.DBLCLICK, e => {
const cell = templateData.currentRenderedCell;
if (!cell) {
return;
}

const clickedOnInput = e.offsetY < (cell.layoutInfo as CodeCellLayoutInfo).outputContainerOffset;
const viewModel = this.notebookEditor.viewModel!;
const metadata: Partial<NotebookCellMetadata> = clickedOnInput ?
{ inputCollapsed: !cell.metadata?.inputCollapsed } :
{ outputCollapsed: !cell.metadata?.outputCollapsed };
viewModel.notebookDocument.applyEdits([
{
editType: CellEditType.PartialMetadata,
index: viewModel.getCellIndex(cell),
metadata
}
], true, undefined, () => undefined, undefined);
});
}

private setupRunToolbar(runButtonContainer: HTMLElement, contextKeyService: IContextKeyService, disposables: DisposableStore): ToolBar {
const runToolbar = this.createToolbar(runButtonContainer);
const runMenu = this.cellMenus.getCellExecuteMenu(contextKeyService);
Expand Down

0 comments on commit fdc4f23

Please sign in to comment.