diff --git a/src/vs/platform/quickinput/browser/media/quickInput.css b/src/vs/platform/quickinput/browser/media/quickInput.css index 270d86a00872a..b32c9df0a14fd 100644 --- a/src/vs/platform/quickinput/browser/media/quickInput.css +++ b/src/vs/platform/quickinput/browser/media/quickInput.css @@ -388,6 +388,11 @@ padding-bottom: 5px; } +.quick-input-tree.quick-input-tree-flat .monaco-tl-indent, +.quick-input-tree.quick-input-tree-flat .monaco-tl-twistie { + display: none !important; +} + .quick-input-tree .quick-input-tree-entry { box-sizing: border-box; overflow: hidden; diff --git a/src/vs/platform/quickinput/browser/tree/quickInputTreeController.ts b/src/vs/platform/quickinput/browser/tree/quickInputTreeController.ts index 7d51f4f4cd4f2..450fcb3fd8e22 100644 --- a/src/vs/platform/quickinput/browser/tree/quickInputTreeController.ts +++ b/src/vs/platform/quickinput/browser/tree/quickInputTreeController.ts @@ -20,6 +20,7 @@ import { QuickInputTreeRenderer } from './quickInputTreeRenderer.js'; import { QuickInputTreeSorter } from './quickInputTreeSorter.js'; const $ = dom.$; +const flatHierarchyClass = 'quick-input-tree-flat'; export class QuickInputTreeController extends Disposable { private readonly _renderer: QuickInputTreeRenderer; @@ -33,7 +34,7 @@ export class QuickInputTreeController extends Disposable { private readonly _onDidChangeCheckboxState = this._register(new Emitter>()); readonly onDidChangeCheckboxState = this._onDidChangeCheckboxState.event; - private readonly _onDidCheckedLeafItemsChange = this._register(new Emitter>); + private readonly _onDidCheckedLeafItemsChange = this._register(new Emitter>()); readonly onDidChangeCheckedLeafItems = this._onDidCheckedLeafItemsChange.event; private readonly _onLeave = new Emitter(); @@ -132,9 +133,11 @@ export class QuickInputTreeController extends Disposable { } setTreeData(treeData: readonly IQuickTreeItem[]): void { + let hasNestedItems = false; const createTreeElement = (item: IQuickTreeItem): IObjectTreeElement => { let children: IObjectTreeElement[] | undefined; - if (item.children) { + if (item.children && item.children.length > 0) { + hasNestedItems = true; children = item.children.map(child => createTreeElement(child)); item.checked = getParentNodeState(children); } @@ -148,6 +151,7 @@ export class QuickInputTreeController extends Disposable { const treeElements = treeData.map(item => createTreeElement(item)); this._tree.setChildren(null, treeElements); + this._container.classList.toggle(flatHierarchyClass, !hasNestedItems); } layout(maxHeight?: number): void {