Skip to content

Commit 86b9195

Browse files
author
Benjamin Pasero
committed
quick access - clean up
1 parent 5d18ad4 commit 86b9195

6 files changed

Lines changed: 69 additions & 75 deletions

File tree

src/vs/base/browser/ui/list/listWidget.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1501,9 +1501,13 @@ export class List<T> implements ISpliceable<T>, IDisposable {
15011501
}
15021502

15031503
focusFirst(browserEvent?: UIEvent, filter?: (element: T) => boolean): void {
1504+
this.focusNth(0, browserEvent, filter);
1505+
}
1506+
1507+
focusNth(n: number, browserEvent?: UIEvent, filter?: (element: T) => boolean): void {
15041508
if (this.length === 0) { return; }
15051509

1506-
const index = this.findNextIndex(0, false, filter);
1510+
const index = this.findNextIndex(n, false, filter);
15071511

15081512
if (index > -1) {
15091513
this.setFocus([index], browserEvent);

src/vs/base/parts/quickinput/browser/quickInput.ts

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import 'vs/css!./media/quickInput';
77
import { IQuickPickItem, IPickOptions, IInputOptions, IQuickNavigateConfiguration, IQuickPick, IQuickInput, IQuickInputButton, IInputBox, IQuickPickItemButtonEvent, QuickPickInput, IQuickPickSeparator, IKeyMods, IQuickPickAcceptEvent, NO_KEY_MODS } from 'vs/base/parts/quickinput/common/quickInput';
88
import * as dom from 'vs/base/browser/dom';
99
import { CancellationToken } from 'vs/base/common/cancellation';
10-
import { QuickInputList } from './quickInputList';
10+
import { QuickInputList, QuickInputListFocus } from './quickInputList';
1111
import { QuickInputBox } from './quickInputBox';
1212
import { KeyCode } from 'vs/base/common/keyCodes';
1313
import { StandardKeyboardEvent } from 'vs/base/browser/keyboardEvent';
@@ -629,7 +629,7 @@ class QuickPick<T extends IQuickPickItem> extends QuickInput implements IQuickPi
629629
private trySelectFirst() {
630630
if (this.autoFocusOnList) {
631631
if (!this.ui.isScreenReaderOptimized() && !this.canSelectMany) {
632-
this.ui.list.focus('First');
632+
this.ui.list.focus(QuickInputListFocus.First);
633633
}
634634
}
635635
}
@@ -656,17 +656,17 @@ class QuickPick<T extends IQuickPickItem> extends QuickInput implements IQuickPi
656656
this.visibleDisposables.add(this.ui.inputBox.onKeyDown(event => {
657657
switch (event.keyCode) {
658658
case KeyCode.DownArrow:
659-
this.ui.list.focus('Next');
659+
this.ui.list.focus(QuickInputListFocus.Next);
660660
if (this.canSelectMany) {
661661
this.ui.list.domFocus();
662662
}
663663
event.preventDefault();
664664
break;
665665
case KeyCode.UpArrow:
666666
if (this.ui.list.getFocusedElements().length) {
667-
this.ui.list.focus('Previous');
667+
this.ui.list.focus(QuickInputListFocus.Previous);
668668
} else {
669-
this.ui.list.focus('Last');
669+
this.ui.list.focus(QuickInputListFocus.Last);
670670
}
671671
if (this.canSelectMany) {
672672
this.ui.list.domFocus();
@@ -675,9 +675,9 @@ class QuickPick<T extends IQuickPickItem> extends QuickInput implements IQuickPi
675675
break;
676676
case KeyCode.PageDown:
677677
if (this.ui.list.getFocusedElements().length) {
678-
this.ui.list.focus('NextPage');
678+
this.ui.list.focus(QuickInputListFocus.NextPage);
679679
} else {
680-
this.ui.list.focus('First');
680+
this.ui.list.focus(QuickInputListFocus.First);
681681
}
682682
if (this.canSelectMany) {
683683
this.ui.list.domFocus();
@@ -686,9 +686,9 @@ class QuickPick<T extends IQuickPickItem> extends QuickInput implements IQuickPi
686686
break;
687687
case KeyCode.PageUp:
688688
if (this.ui.list.getFocusedElements().length) {
689-
this.ui.list.focus('PreviousPage');
689+
this.ui.list.focus(QuickInputListFocus.PreviousPage);
690690
} else {
691-
this.ui.list.focus('Last');
691+
this.ui.list.focus(QuickInputListFocus.Last);
692692
}
693693
if (this.canSelectMany) {
694694
this.ui.list.domFocus();
@@ -768,15 +768,15 @@ class QuickPick<T extends IQuickPickItem> extends QuickInput implements IQuickPi
768768

769769
private registerQuickNavigation() {
770770
return dom.addDisposableListener(this.ui.container, dom.EventType.KEY_UP, e => {
771-
if (this.canSelectMany || !this.quickNavigate) {
771+
if (this.canSelectMany || !this._quickNavigate) {
772772
return;
773773
}
774774

775775
const keyboardEvent: StandardKeyboardEvent = new StandardKeyboardEvent(e);
776776
const keyCode = keyboardEvent.keyCode;
777777

778778
// Select element when keys are pressed that signal it
779-
const quickNavKeys = this.quickNavigate.keybindings;
779+
const quickNavKeys = this._quickNavigate.keybindings;
780780
const wasTriggerKeyPressed = quickNavKeys.some(k => {
781781
const [firstPart, chordPart] = k.getParts();
782782
if (chordPart) {
@@ -850,11 +850,12 @@ class QuickPick<T extends IQuickPickItem> extends QuickInput implements IQuickPi
850850
this.ui.checkAll.checked = this.ui.list.getAllVisibleChecked();
851851
this.ui.visibleCount.setCount(this.ui.list.getVisibleCount());
852852
this.ui.count.setCount(this.ui.list.getCheckedCount());
853-
this.trySelectFirst();
854853
if (this._quickNavigate && previousItemCount === 0 && this.items.length > 1) {
855854
// quick navigate: automatically focus the second entry
856855
// so that upon release the item is picked directly
857-
this.ui.list.focus('Next');
856+
this.ui.list.focus(QuickInputListFocus.Second);
857+
} else {
858+
this.trySelectFirst();
858859
}
859860
}
860861
if (this.ui.container.classList.contains('show-checkboxes') !== !!this.canSelectMany) {
@@ -1544,7 +1545,7 @@ export class QuickInputController extends Disposable {
15441545

15451546
navigate(next: boolean, quickNavigate?: IQuickNavigateConfiguration) {
15461547
if (this.isDisplayed() && this.getUI().list.isDisplayed()) {
1547-
this.getUI().list.focus(next ? 'Next' : 'Previous');
1548+
this.getUI().list.focus(next ? QuickInputListFocus.Next : QuickInputListFocus.Previous);
15481549
if (quickNavigate && this.controller instanceof QuickPick) {
15491550
this.controller.quickNavigate = quickNavigate;
15501551
}

src/vs/base/parts/quickinput/browser/quickInputList.ts

Lines changed: 40 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -222,6 +222,16 @@ class ListElementDelegate implements IListVirtualDelegate<ListElement> {
222222
}
223223
}
224224

225+
export enum QuickInputListFocus {
226+
First = 1,
227+
Second,
228+
Last,
229+
Next,
230+
Previous,
231+
NextPage,
232+
PreviousPage
233+
}
234+
225235
export class QuickInputList {
226236

227237
readonly id: string;
@@ -474,18 +484,42 @@ export class QuickInputList {
474484
this.list.getHTMLElement().style.pointerEvents = value ? null : 'none';
475485
}
476486

477-
focus(what: 'First' | 'Last' | 'Next' | 'Previous' | 'NextPage' | 'PreviousPage'): void {
487+
focus(what: QuickInputListFocus): void {
478488
if (!this.list.length) {
479489
return;
480490
}
481491

482-
if ((what === 'Next' || what === 'NextPage') && this.list.getFocus()[0] === this.list.length - 1) {
483-
what = 'First';
492+
if ((what === QuickInputListFocus.Next || what === QuickInputListFocus.NextPage) && this.list.getFocus()[0] === this.list.length - 1) {
493+
what = QuickInputListFocus.First;
484494
}
485-
if ((what === 'Previous' || what === 'PreviousPage') && this.list.getFocus()[0] === 0) {
486-
what = 'Last';
495+
if ((what === QuickInputListFocus.Previous || what === QuickInputListFocus.PreviousPage) && this.list.getFocus()[0] === 0) {
496+
what = QuickInputListFocus.Last;
487497
}
488-
this.list['focus' + what as 'focusFirst' | 'focusLast' | 'focusNext' | 'focusPrevious' | 'focusNextPage' | 'focusPreviousPage']();
498+
499+
switch (what) {
500+
case QuickInputListFocus.First:
501+
this.list.focusFirst();
502+
break;
503+
case QuickInputListFocus.Second:
504+
this.list.focusNth(1);
505+
break;
506+
case QuickInputListFocus.Last:
507+
this.list.focusLast();
508+
break;
509+
case QuickInputListFocus.Next:
510+
this.list.focusNext();
511+
break;
512+
case QuickInputListFocus.Previous:
513+
this.list.focusPrevious();
514+
break;
515+
case QuickInputListFocus.NextPage:
516+
this.list.focusNextPage();
517+
break;
518+
case QuickInputListFocus.PreviousPage:
519+
this.list.focusPreviousPage();
520+
break;
521+
}
522+
489523
this.list.reveal(this.list.getFocus()[0]);
490524
}
491525

src/vs/workbench/contrib/quickaccess/browser/quickAccess.contribution.ts

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,7 @@ import { IQuickAccessRegistry, Extensions } from 'vs/platform/quickinput/common/
88
import { Registry } from 'vs/platform/registry/common/platform';
99
import { HelpQuickAccessProvider } from 'vs/platform/quickinput/browser/helpQuickAccess';
1010
import { ViewQuickAccessProvider } from 'vs/workbench/contrib/quickaccess/browser/viewQuickAccess';
11-
import { QUICK_ACCESS_COMMAND_ID, quickAccessCommand } from 'vs/workbench/contrib/quickaccess/browser/quickAccessCommands';
12-
import { MenuRegistry, MenuId } from 'vs/platform/actions/common/actions';
1311
import { CommandsQuickAccessProvider } from 'vs/workbench/contrib/quickaccess/browser/commandsQuickAccess';
14-
import { KeybindingsRegistry, KeybindingWeight } from 'vs/platform/keybinding/common/keybindingsRegistry';
1512

1613
const registry = Registry.as<IQuickAccessRegistry>(Extensions.Quickaccess);
1714

@@ -35,19 +32,3 @@ registry.registerQuickAccessProvider({
3532
placeholder: localize('commandsQuickAccessPlaceholder', "Type the name of a command to run."),
3633
helpEntries: [{ description: localize('commandsQuickAccess', "Show and Run Commands"), needsEditor: false }]
3734
});
38-
39-
MenuRegistry.appendMenuItem(MenuId.CommandPalette, {
40-
command: {
41-
id: QUICK_ACCESS_COMMAND_ID, title: {
42-
value: localize('openQuickAccess', "Open Quick Access"), original: 'Open Quick Access'
43-
},
44-
category: localize('quickAccess', "Quick Access")
45-
}
46-
});
47-
48-
KeybindingsRegistry.registerCommandAndKeybindingRule({
49-
id: QUICK_ACCESS_COMMAND_ID,
50-
weight: KeybindingWeight.WorkbenchContrib,
51-
when: undefined,
52-
handler: quickAccessCommand.handler
53-
});

src/vs/workbench/contrib/quickaccess/browser/quickAccessCommands.ts

Lines changed: 0 additions & 28 deletions
This file was deleted.

src/vs/workbench/contrib/search/browser/anythingQuickAccess.ts

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -62,11 +62,13 @@ export class AnythingQuickAccessProvider extends PickerQuickAccessProvider<IAnyt
6262

6363
constructor(private readonly provider: AnythingQuickAccessProvider) { }
6464

65-
reset(): void {
65+
reset(prepareForSearching: boolean): void {
6666

6767
// Caches
68-
this.fileQueryCache = this.provider.createFileQueryCache();
69-
this.scorerCache = Object.create(null);
68+
if (prepareForSearching) {
69+
this.fileQueryCache = this.provider.createFileQueryCache();
70+
this.scorerCache = Object.create(null);
71+
}
7072

7173
// Other
7274
this.lastOriginalFilter = undefined;
@@ -111,7 +113,7 @@ export class AnythingQuickAccessProvider extends PickerQuickAccessProvider<IAnyt
111113
provide(picker: IQuickPick<IAnythingQuickPickItem>, token: CancellationToken): IDisposable {
112114

113115
// Reset the pick state for this run
114-
this.pickState.reset();
116+
this.pickState.reset(!picker.quickNavigate);
115117

116118
// Start picker
117119
return super.provide(picker, token);
@@ -223,7 +225,7 @@ export class AnythingQuickAccessProvider extends PickerQuickAccessProvider<IAnyt
223225

224226
private readonly labelOnlyEditorHistoryPickAccessor = new QuickPickItemScorerAccessor({ skipDescription: true });
225227

226-
protected getEditorHistoryPicks(query: IPreparedQuery): Array<IAnythingQuickPickItem> {
228+
private getEditorHistoryPicks(query: IPreparedQuery): Array<IAnythingQuickPickItem> {
227229
const configuration = this.configuration;
228230

229231
// Just return all history entries if not searching
@@ -282,7 +284,7 @@ export class AnythingQuickAccessProvider extends PickerQuickAccessProvider<IAnyt
282284
).load();
283285
}
284286

285-
protected async getFilePicks(query: IPreparedQuery, excludes: ResourceMap<boolean>, token: CancellationToken): Promise<Array<IAnythingQuickPickItem>> {
287+
private async getFilePicks(query: IPreparedQuery, excludes: ResourceMap<boolean>, token: CancellationToken): Promise<Array<IAnythingQuickPickItem>> {
286288
if (!query.value) {
287289
return [];
288290
}
@@ -444,7 +446,7 @@ export class AnythingQuickAccessProvider extends PickerQuickAccessProvider<IAnyt
444446

445447
private symbolsQuickAccess = this._register(this.instantiationService.createInstance(SymbolsQuickAccessProvider));
446448

447-
protected async getSymbolPicks(query: IPreparedQuery, token: CancellationToken): Promise<Array<IAnythingQuickPickItem>> {
449+
private async getSymbolPicks(query: IPreparedQuery, token: CancellationToken): Promise<Array<IAnythingQuickPickItem>> {
448450
const configuration = this.configuration;
449451
if (
450452
!query.value || // we need a value for search for

0 commit comments

Comments
 (0)