diff --git a/.gitignore b/.gitignore index d08f65260d3..7412c251294 100644 --- a/.gitignore +++ b/.gitignore @@ -12,4 +12,5 @@ out-vscode/ out-vscode-min/ build/node_modules coverage/ -test_data/ \ No newline at end of file +test_data/ +yarn-error.log \ No newline at end of file diff --git a/src/vs/editor/contrib/folding/folding.ts b/src/vs/editor/contrib/folding/folding.ts index 0c0ac80f95d..f925f3e08a4 100644 --- a/src/vs/editor/contrib/folding/folding.ts +++ b/src/vs/editor/contrib/folding/folding.ts @@ -229,7 +229,10 @@ export class FoldingController implements IEditorContribution { this.mouseDownInfo = null; let range = e.target.range; - if (!this.hiddenRangeModel || !range || !e.event.leftButton) { + if (!this.hiddenRangeModel || !range) { + return; + } + if (!e.event.leftButton && !e.event.middleButton) { return; } let iconClicked = false; @@ -298,7 +301,11 @@ export class FoldingController implements IEditorContribution { let region = foldingModel.getRegionAtLine(lineNumber); if (region && region.startLineNumber === lineNumber) { if (iconClicked || region.isCollapsed) { - foldingModel.toggleCollapseState([region]); + if (e.event.middleButton) { + setCollapseStateLevelsDown(foldingModel, !region.isCollapsed, Number.MAX_VALUE, [lineNumber]); + } else { + foldingModel.toggleCollapseState([region]); + } this.reveal(lineNumber); } }