Skip to content

Commit

Permalink
Only QuickNav if there was a keyDown since shown (fixes #83013)
Browse files Browse the repository at this point in the history
  • Loading branch information
chrmarti committed Nov 12, 2019
1 parent 5fbd6bb commit 8faa1d5
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 2 deletions.
7 changes: 6 additions & 1 deletion src/vs/base/parts/quickopen/browser/quickOpenWidget.ts
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,7 @@ export class QuickOpenWidget extends Disposable implements IModelProvider {
private styles: IQuickOpenStyles;
// @ts-ignore (legacy widget - to be replaced with quick input)
private renderer: Renderer;
private keyDownSeenSinceShown = false;

constructor(container: HTMLElement, callbacks: IQuickOpenCallbacks, options: IQuickOpenOptions) {
super();
Expand Down Expand Up @@ -170,6 +171,7 @@ export class QuickOpenWidget extends Disposable implements IModelProvider {
this._register(DOM.addDisposableListener(this.element, DOM.EventType.FOCUS, e => this.gainingFocus(), true));
this._register(DOM.addDisposableListener(this.element, DOM.EventType.BLUR, e => this.loosingFocus(e), true));
this._register(DOM.addDisposableListener(this.element, DOM.EventType.KEY_DOWN, e => {
this.keyDownSeenSinceShown = true;
const keyboardEvent: StandardKeyboardEvent = new StandardKeyboardEvent(e);
if (keyboardEvent.keyCode === KeyCode.Escape) {
DOM.EventHelper.stop(e, true);
Expand Down Expand Up @@ -220,6 +222,7 @@ export class QuickOpenWidget extends Disposable implements IModelProvider {

this._register(DOM.addDisposableListener(this.inputBox.inputElement, DOM.EventType.INPUT, (e: Event) => this.onType()));
this._register(DOM.addDisposableListener(this.inputBox.inputElement, DOM.EventType.KEY_DOWN, (e: KeyboardEvent) => {
this.keyDownSeenSinceShown = true;
const keyboardEvent: StandardKeyboardEvent = new StandardKeyboardEvent(e);
const shouldOpenInBackground = this.shouldOpenInBackground(keyboardEvent);

Expand Down Expand Up @@ -300,6 +303,7 @@ export class QuickOpenWidget extends Disposable implements IModelProvider {
}));

this._register(DOM.addDisposableListener(this.treeContainer, DOM.EventType.KEY_DOWN, e => {
this.keyDownSeenSinceShown = true;
const keyboardEvent: StandardKeyboardEvent = new StandardKeyboardEvent(e);

// Only handle when in quick navigation mode
Expand All @@ -320,7 +324,7 @@ export class QuickOpenWidget extends Disposable implements IModelProvider {
const keyCode = keyboardEvent.keyCode;

// Only handle when in quick navigation mode
if (!this.quickNavigateConfiguration) {
if (!this.quickNavigateConfiguration || !this.keyDownSeenSinceShown) {
return;
}

Expand Down Expand Up @@ -595,6 +599,7 @@ export class QuickOpenWidget extends Disposable implements IModelProvider {
this.visible = true;
this.isLoosingFocus = false;
this.quickNavigateConfiguration = options ? options.quickNavigateConfiguration : undefined;
this.keyDownSeenSinceShown = false;

// Adjust UI for quick navigate mode
if (this.quickNavigateConfiguration) {
Expand Down
7 changes: 6 additions & 1 deletion src/vs/workbench/browser/parts/quickinput/quickInput.ts
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,7 @@ interface QuickInputUI {
onDidTriggerButton: Event<IQuickInputButton>;
ignoreFocusOut: boolean;
keyMods: Writeable<IKeyMods>;
keyDownSeenSinceShown: boolean;
isScreenReaderOptimized(): boolean;
show(controller: QuickInput): void;
setVisibilities(visibilities: Visibilities): void;
Expand Down Expand Up @@ -216,6 +217,7 @@ class QuickInput extends Disposable implements IQuickInput {
}
}),
);
this.ui.keyDownSeenSinceShown = false;
this.ui.show(this);
this.visible = true;
this.update();
Expand Down Expand Up @@ -554,6 +556,7 @@ class QuickPick<T extends IQuickPickItem> extends QuickInput implements IQuickPi
}
}));
this.visibleDisposables.add(this.ui.inputBox.onKeyDown(event => {
this.ui.keyDownSeenSinceShown = true;
switch (event.keyCode) {
case KeyCode.DownArrow:
this.ui.list.focus('Next');
Expand Down Expand Up @@ -652,7 +655,7 @@ class QuickPick<T extends IQuickPickItem> extends QuickInput implements IQuickPi

private registerQuickNavigation() {
return dom.addDisposableListener(this.ui.container, dom.EventType.KEY_UP, e => {
if (this.canSelectMany || !this.quickNavigate) {
if (this.canSelectMany || !this.quickNavigate || !this.ui.keyDownSeenSinceShown) {
return;
}

Expand Down Expand Up @@ -1111,6 +1114,7 @@ export class QuickInputService extends Component implements IQuickInputService {
inputBox.setFocus();
}));
this._register(dom.addDisposableListener(container, dom.EventType.KEY_DOWN, (e: KeyboardEvent) => {
this.getUI().keyDownSeenSinceShown = true;
const event = new StandardKeyboardEvent(e);
switch (event.keyCode) {
case KeyCode.Enter:
Expand Down Expand Up @@ -1172,6 +1176,7 @@ export class QuickInputService extends Component implements IQuickInputService {
onDidTriggerButton: this.onDidTriggerButtonEmitter.event,
ignoreFocusOut: false,
keyMods: this.keyMods,
keyDownSeenSinceShown: false,
isScreenReaderOptimized: () => this.isScreenReaderOptimized(),
show: controller => this.show(controller),
hide: () => this.hide(),
Expand Down

0 comments on commit 8faa1d5

Please sign in to comment.