Fix pinned items showing when toggling quick input toggles

This commit is contained in:
Daniel Imms
2022-08-19 10:52:34 -07:00
parent f8d15ab606
commit b2ea188f9e
3 changed files with 10 additions and 6 deletions
@@ -342,6 +342,7 @@ export interface IQuickPick<T extends IQuickPickItem> extends IQuickInput {
hideCheckAll: boolean;
// TODO: Fix layering issue
additionalToggles: Toggle[] | undefined;
}
@@ -19,18 +19,22 @@ const buttonClasses = [pinButtonClass, pinnedButtonClass];
* Shows the quickpick once formatted.
*/
export async function showWithPinnedItems(storageService: IStorageService, storageKey: string, quickPick: IQuickPick<IQuickPickItem>, filterDuplicates?: boolean): Promise<void> {
const itemsWithoutPinned = quickPick.items;
let itemsWithPinned = _formatPinnedItems(storageKey, quickPick, storageService, undefined, filterDuplicates);
quickPick.onDidTriggerItemButton(async buttonEvent => {
const expectedButton = buttonEvent.button.iconClass && buttonClasses.includes(buttonEvent.button.iconClass);
if (expectedButton) {
quickPick.items = await _formatPinnedItems(storageKey, quickPick, storageService, buttonEvent.item, filterDuplicates);
quickPick.items = itemsWithoutPinned;
itemsWithPinned = _formatPinnedItems(storageKey, quickPick, storageService, buttonEvent.item, filterDuplicates);
quickPick.items = quickPick.value ? itemsWithoutPinned : itemsWithPinned;
}
});
quickPick.onDidChangeValue(async value => {
// don't show pinned items in the search results
quickPick.items = value ? quickPick.items.filter(i => i.type !== 'separator' && !i.buttons?.find(b => b.iconClass === pinnedButtonClass)) : quickPick.items;
// Return pinned items if there is no search value
quickPick.items = value ? itemsWithoutPinned : itemsWithPinned;
});
quickPick.items = await _formatPinnedItems(storageKey, quickPick, storageService, undefined, filterDuplicates);
await quickPick.show();
quickPick.items = quickPick.value ? itemsWithoutPinned : itemsWithPinned;
quickPick.show();
}
function _formatPinnedItems(storageKey: string, quickPick: IQuickPick<IQuickPickItem>, storageService: IStorageService, changedItem?: IQuickPickItem, filterDuplicates?: boolean): QuickPickItem[] {
@@ -1011,7 +1011,6 @@ export class TerminalInstance extends Disposable implements ITerminalInstance {
if (items.length === 0) {
return;
}
// TODO: Toggling fuzzy shows pinned again
const fuzzySearchToggle = new Toggle({
title: 'Fuzzy search',
icon: Codicon.searchFuzzy,