From 12c6aaa7dbcecf411ebe2b008394821613ebef4c Mon Sep 17 00:00:00 2001 From: Martin Aeschlimann Date: Mon, 20 Nov 2017 16:20:29 +0100 Subject: [PATCH] [folding] Support Shift+Click on folding marker to recursively unfold. Fixes #16517 --- src/vs/editor/contrib/folding/folding.ts | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/vs/editor/contrib/folding/folding.ts b/src/vs/editor/contrib/folding/folding.ts index f925f3e08a4..22149d33b21 100644 --- a/src/vs/editor/contrib/folding/folding.ts +++ b/src/vs/editor/contrib/folding/folding.ts @@ -300,12 +300,13 @@ export class FoldingController implements IEditorContribution { if (foldingModel) { let region = foldingModel.getRegionAtLine(lineNumber); if (region && region.startLineNumber === lineNumber) { - if (iconClicked || region.isCollapsed) { - if (e.event.middleButton) { - setCollapseStateLevelsDown(foldingModel, !region.isCollapsed, Number.MAX_VALUE, [lineNumber]); - } else { - foldingModel.toggleCollapseState([region]); + let isCollapsed = region.isCollapsed; + if (iconClicked || isCollapsed) { + let toToggle = [region]; + if (e.event.middleButton || e.event.shiftKey) { + toToggle.push(...foldingModel.getRegionsInside(region, r => r.isCollapsed === isCollapsed)); } + foldingModel.toggleCollapseState(toToggle); this.reveal(lineNumber); } }