diff --git a/src/vs/workbench/parts/preferences/browser/keybindingsEditor.ts b/src/vs/workbench/parts/preferences/browser/keybindingsEditor.ts index 8af33ba4a1978d84dbd5ec50fb7e7ea7469beded..0339712cf9587716bbc12d4f06ca52b8e0e8169b 100644 --- a/src/vs/workbench/parts/preferences/browser/keybindingsEditor.ts +++ b/src/vs/workbench/parts/preferences/browser/keybindingsEditor.ts @@ -194,7 +194,8 @@ export class KeybindingsEditor extends BaseEditor implements IKeybindingsEditor this.headerContainer = DOM.append(parent, $('.keybindings-header')); this.searchWidget = this._register(this.instantiationService.createInstance(SearchWidget, DOM.append(this.headerContainer, $('.search-container')), { ariaLabel: localize('SearchKeybindings.AriaLabel', "Search keybindings"), - placeholder: localize('SearchKeybindings.Placeholder', "Search keybindings") + placeholder: localize('SearchKeybindings.Placeholder', "Search keybindings"), + navigateByArrows: true })); this._register(this.searchWidget.onDidChange(searchValue => this.delayedFiltering.trigger(() => this.render()))); this._register(this.searchWidget.onNavigate(back => this._onNavigate(back))); diff --git a/src/vs/workbench/parts/preferences/browser/preferencesEditor.ts b/src/vs/workbench/parts/preferences/browser/preferencesEditor.ts index e82dab7a55f2d7901f976060aa22897bea527474..a2a991e8362ba522d03dd98cd0df8c573d78f1a9 100644 --- a/src/vs/workbench/parts/preferences/browser/preferencesEditor.ts +++ b/src/vs/workbench/parts/preferences/browser/preferencesEditor.ts @@ -125,7 +125,9 @@ export class PreferencesEditor extends BaseEditor { this.searchWidget = this._register(this.instantiationService.createInstance(SearchWidget, this.headerContainer, { ariaLabel: nls.localize('SearchSettingsWidget.AriaLabel', "Search settings"), - placeholder: nls.localize('SearchSettingsWidget.Placeholder', "Search Settings") + placeholder: nls.localize('SearchSettingsWidget.Placeholder', "Search Settings"), + navigateByArrows: true, + navigateByEnter: true })); this._register(this.searchWidget.onDidChange(value => this.filterPreferences(value.trim()))); this._register(this.searchWidget.onNavigate(shift => this.preferencesRenderers.focusNextPreference(!shift))); diff --git a/src/vs/workbench/parts/preferences/browser/preferencesWidgets.ts b/src/vs/workbench/parts/preferences/browser/preferencesWidgets.ts index fee6ca77d7248bf6ee3bb51f58541a0bcc646ad4..ba69694b80821aca0f72629b8c736034f46ba670 100644 --- a/src/vs/workbench/parts/preferences/browser/preferencesWidgets.ts +++ b/src/vs/workbench/parts/preferences/browser/preferencesWidgets.ts @@ -224,6 +224,11 @@ export class SettingsTabsWidget extends Widget { } } +export interface SearchOptions extends IInputOptions { + navigateByEnter?: boolean; + navigateByArrows?: boolean; +} + export class SearchWidget extends Widget { public domNode: HTMLElement; @@ -238,7 +243,7 @@ export class SearchWidget extends Widget { private _onNavigate = this._register(new Emitter()); public onNavigate: Event = this._onNavigate.event; - constructor(parent: HTMLElement, protected options: IInputOptions, + constructor(parent: HTMLElement, protected options: SearchOptions, @IContextViewService private contextViewService: IContextViewService, @IContextMenuService private contextMenuService: IContextMenuService, @IInstantiationService protected instantiationService: IInstantiationService @@ -299,15 +304,21 @@ export class SearchWidget extends Widget { let handled = false; switch (keyboardEvent.keyCode) { case KeyCode.Enter: - this._onNavigate.fire(keyboardEvent.shiftKey); - handled = true; + if (this.options.navigateByEnter) { + this._onNavigate.fire(keyboardEvent.shiftKey); + handled = true; + } break; case KeyCode.UpArrow: - this._onNavigate.fire(true); + if (this.options.navigateByArrows) { + this._onNavigate.fire(true); + } handled = true; break; case KeyCode.DownArrow: - this._onNavigate.fire(false); + if (this.options.navigateByArrows) { + this._onNavigate.fire(false); + } handled = true; break; case KeyCode.Escape: