Skip to content

Commit d994aed

Browse files
Also fire an event when focus & selection goes to empty (microsoft#209157)
Fixes microsoft#209074
1 parent 9573ace commit d994aed

File tree

1 file changed

+14
-4
lines changed

1 file changed

+14
-4
lines changed

src/vs/platform/quickinput/browser/quickInputTree.ts

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import * as dom from 'vs/base/browser/dom';
77
import { Emitter, Event } from 'vs/base/common/event';
88
import { IHoverDelegate } from 'vs/base/browser/ui/hover/hoverDelegate';
99
import { IListVirtualDelegate } from 'vs/base/browser/ui/list/list';
10-
import { IObjectTreeElement, ITreeNode, ITreeRenderer } from 'vs/base/browser/ui/tree/tree';
10+
import { IObjectTreeElement, ITreeEvent, ITreeNode, ITreeRenderer } from 'vs/base/browser/ui/tree/tree';
1111
import { localize } from 'vs/nls';
1212
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
1313
import { WorkbenchObjectTree } from 'vs/platform/list/browser/listService';
@@ -696,6 +696,8 @@ export class QuickInputTree extends Disposable {
696696
private readonly _onSeparatorButtonTriggered = new Emitter<IQuickPickSeparatorButtonEvent>();
697697
onSeparatorButtonTriggered = this._onSeparatorButtonTriggered.event;
698698

699+
private readonly _onTriggerEmptySelectionOrFocus = new Emitter<ITreeEvent<IQuickPickElement | null>>();
700+
699701
private readonly _container: HTMLElement;
700702
private readonly _tree: WorkbenchObjectTree<IQuickPickElement, void>;
701703
private readonly _separatorRenderer: QuickPickSeparatorElementRenderer;
@@ -748,7 +750,7 @@ export class QuickInputTree extends Disposable {
748750
?? element.separator?.id
749751
?? element.separator?.label
750752
?? '';
751-
}
753+
},
752754
},
753755
alwaysConsumeMouseWheel: true
754756
}
@@ -762,15 +764,15 @@ export class QuickInputTree extends Disposable {
762764
@memoize
763765
get onDidChangeFocus() {
764766
return Event.map(
765-
this._tree.onDidChangeFocus,
767+
Event.any(this._tree.onDidChangeFocus, this._onTriggerEmptySelectionOrFocus.event),
766768
e => e.elements.filter((e): e is QuickPickItemElement => e instanceof QuickPickItemElement).map(e => e.item)
767769
);
768770
}
769771

770772
@memoize
771773
get onDidChangeSelection() {
772774
return Event.map(
773-
this._tree.onDidChangeSelection,
775+
Event.any(this._tree.onDidChangeSelection, this._onTriggerEmptySelectionOrFocus.event),
774776
e => ({
775777
items: e.elements.filter((e): e is QuickPickItemElement => e instanceof QuickPickItemElement).map(e => e.item),
776778
event: e.browserEvent
@@ -1504,7 +1506,15 @@ export class QuickInputTree extends Disposable {
15041506
});
15051507
}
15061508
}
1509+
const before = this._tree.getFocus().length;
15071510
this._tree.setChildren(null, elements);
1511+
// Temporary fix until we figure out why the tree doesn't fire an event when focus & selection
1512+
// get changed to empty arrays.
1513+
if (before > 0 && elements.length === 0) {
1514+
this._onTriggerEmptySelectionOrFocus.fire({
1515+
elements: []
1516+
});
1517+
}
15081518
this._tree.layout();
15091519

15101520
this._onChangedAllVisibleChecked.fire(this.getAllVisibleChecked());

0 commit comments

Comments
 (0)