diff --git a/src/vs/base/browser/ui/tree/treeModel.ts b/src/vs/base/browser/ui/tree/treeModel.ts index bf208777e61..a2d6619e684 100644 --- a/src/vs/base/browser/ui/tree/treeModel.ts +++ b/src/vs/base/browser/ui/tree/treeModel.ts @@ -309,7 +309,7 @@ export class TreeModel { node.revealedCount = node === this.root ? 0 : 1; let hasVisibleDescendants = false; - if (typeof node.visible === 'undefined' || !node.collapsed) { + if (node.visible !== false || !node.collapsed) { for (const child of node.children) { hasVisibleDescendants = this._updateNodeAfterFilterChange(child, result, revealed && !node.collapsed) || hasVisibleDescendants; } diff --git a/src/vs/base/test/browser/ui/tree/treeModel.test.ts b/src/vs/base/test/browser/ui/tree/treeModel.test.ts index 3826cf0174f..55e9752ac35 100644 --- a/src/vs/base/test/browser/ui/tree/treeModel.test.ts +++ b/src/vs/base/test/browser/ui/tree/treeModel.test.ts @@ -538,6 +538,16 @@ suite('TreeModel2', function () { model.setCollapsed([0], false); assert.deepEqual(toArray(list), ['vscode', 'build', 'gulpfile.js']); + + model.setCollapsed([0], true); + assert.deepEqual(toArray(list), ['vscode']); + + query = new RegExp(''); + model.refilter(); + assert.deepEqual(toArray(list), ['vscode']); + + model.setCollapsed([0], false); + assert.deepEqual(list.length, 10); }); suite('getNodeLocation', function () {