From 72d94dece79b742e65c96ece15a746118e4b4b42 Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Thu, 2 Apr 2020 17:00:47 +0200 Subject: [PATCH] fix #93610 (#94272) --- src/vs/base/parts/quickinput/browser/quickInput.ts | 7 +++++-- src/vs/base/parts/quickinput/common/quickInput.ts | 3 ++- src/vs/platform/quickinput/browser/quickAccess.ts | 4 +++- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/vs/base/parts/quickinput/browser/quickInput.ts b/src/vs/base/parts/quickinput/browser/quickInput.ts index ee6b81cbb9a..e7443407a30 100644 --- a/src/vs/base/parts/quickinput/browser/quickInput.ts +++ b/src/vs/base/parts/quickinput/browser/quickInput.ts @@ -386,7 +386,7 @@ class QuickPick extends QuickInput implements IQuickPi private _matchOnLabel = true; private _sortByLabel = true; private _autoFocusOnList = true; - private _itemActivation = ItemActivation.FIRST; + private _itemActivation = this.ui.isScreenReaderOptimized() ? ItemActivation.NONE /* https://github.com/microsoft/vscode/issues/57501 */ : ItemActivation.FIRST; private _activeItems: T[] = []; private activeItemsUpdated = false; private activeItemsToConfirm: T[] | null = []; @@ -637,7 +637,7 @@ class QuickPick extends QuickInput implements IQuickPi private trySelectFirst() { if (this.autoFocusOnList) { - if (!this.ui.isScreenReaderOptimized() && !this.canSelectMany) { + if (!this.canSelectMany) { this.ui.list.focus(QuickInputListFocus.First); } } @@ -867,6 +867,9 @@ class QuickPick extends QuickInput implements IQuickPi this.ui.visibleCount.setCount(this.ui.list.getVisibleCount()); this.ui.count.setCount(this.ui.list.getCheckedCount()); switch (this._itemActivation) { + case ItemActivation.NONE: + this._itemActivation = ItemActivation.FIRST; // only valid once, then unset + break; case ItemActivation.SECOND: this.ui.list.focus(QuickInputListFocus.Second); this._itemActivation = ItemActivation.FIRST; // only valid once, then unset diff --git a/src/vs/base/parts/quickinput/common/quickInput.ts b/src/vs/base/parts/quickinput/common/quickInput.ts index 83d1f49d43d..f09e508bed7 100644 --- a/src/vs/base/parts/quickinput/common/quickInput.ts +++ b/src/vs/base/parts/quickinput/common/quickInput.ts @@ -183,7 +183,8 @@ export interface IQuickPickAcceptEvent { } export enum ItemActivation { - FIRST = 1, + NONE, + FIRST, SECOND, LAST } diff --git a/src/vs/platform/quickinput/browser/quickAccess.ts b/src/vs/platform/quickinput/browser/quickAccess.ts index c6e83631aff..cc364f7ec9b 100644 --- a/src/vs/platform/quickinput/browser/quickAccess.ts +++ b/src/vs/platform/quickinput/browser/quickAccess.ts @@ -90,7 +90,9 @@ export class QuickAccessController extends Disposable implements IQuickAccessCon picker.placeholder = descriptor?.placeholder; picker.quickNavigate = options?.quickNavigateConfiguration; picker.hideInput = !!picker.quickNavigate && !visibleQuickAccess; // only hide input if there was no picker opened already - picker.itemActivation = options?.itemActivation || (options?.quickNavigateConfiguration ? ItemActivation.SECOND : ItemActivation.FIRST); + if (typeof options?.itemActivation === 'number' || options?.quickNavigateConfiguration) { + picker.itemActivation = options?.itemActivation ?? ItemActivation.SECOND /* quick nav is always second */; + } picker.contextKey = descriptor?.contextKey; picker.filterValue = (value: string) => value.substring(descriptor ? descriptor.prefix.length : 0); if (descriptor?.placeholder) {