Skip to content

Commit a5d4d74

Browse files
committed
Fix microsoft#52887 - aggressive keybinding takes over enter key in settings.json
1 parent 34ba2e2 commit a5d4d74

3 files changed

Lines changed: 14 additions & 10 deletions

File tree

src/vs/workbench/parts/preferences/browser/settingsEditor2.ts

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ import { SearchWidget, SettingsTarget, SettingsTargetsWidget } from 'vs/workbenc
3333
import { commonlyUsedData, tocData } from 'vs/workbench/parts/preferences/browser/settingsLayout';
3434
import { ISettingsEditorViewState, NonExpandableTree, resolveExtensionsSettings, resolveSettingsTree, SearchResultIdx, SearchResultModel, SettingsAccessibilityProvider, SettingsDataSource, SettingsRenderer, SettingsTreeController, SettingsTreeElement, SettingsTreeFilter, SettingsTreeGroupElement, SettingsTreeModel, SettingsTreeSettingElement } from 'vs/workbench/parts/preferences/browser/settingsTree';
3535
import { TOCDataSource, TOCRenderer, TOCTreeModel } from 'vs/workbench/parts/preferences/browser/tocTree';
36-
import { CONTEXT_SETTINGS_EDITOR, CONTEXT_SETTINGS_FIRST_ROW_FOCUS, CONTEXT_SETTINGS_SEARCH_FOCUS, IPreferencesSearchService, ISearchProvider } from 'vs/workbench/parts/preferences/common/preferences';
36+
import { CONTEXT_SETTINGS_EDITOR, CONTEXT_SETTINGS_FIRST_ROW_FOCUS, CONTEXT_SETTINGS_SEARCH_FOCUS, IPreferencesSearchService, ISearchProvider, CONTEXT_SETTINGS_ROW_FOCUS } from 'vs/workbench/parts/preferences/common/preferences';
3737
import { IPreferencesService, ISearchResult, ISettingsEditorModel } from 'vs/workbench/services/preferences/common/preferences';
3838
import { SettingsEditor2Input } from 'vs/workbench/services/preferences/common/preferencesEditorInput';
3939
import { DefaultSettingsEditorModel } from 'vs/workbench/services/preferences/common/preferencesModels';
@@ -76,6 +76,7 @@ export class SettingsEditor2 extends BaseEditor {
7676
private searchResultModel: SearchResultModel;
7777

7878
private firstRowFocused: IContextKey<boolean>;
79+
private rowFocused: IContextKey<boolean>;
7980
private inSettingsEditorContextKey: IContextKey<boolean>;
8081
private searchFocusContextKey: IContextKey<boolean>;
8182

@@ -101,6 +102,7 @@ export class SettingsEditor2 extends BaseEditor {
101102
this.inSettingsEditorContextKey = CONTEXT_SETTINGS_EDITOR.bindTo(contextKeyService);
102103
this.searchFocusContextKey = CONTEXT_SETTINGS_SEARCH_FOCUS.bindTo(contextKeyService);
103104
this.firstRowFocused = CONTEXT_SETTINGS_FIRST_ROW_FOCUS.bindTo(contextKeyService);
105+
this.rowFocused = CONTEXT_SETTINGS_ROW_FOCUS.bindTo(contextKeyService);
104106

105107
this._register(configurationService.onDidChangeConfiguration(e => {
106108
this.onConfigUpdate();
@@ -359,12 +361,19 @@ export class SettingsEditor2 extends BaseEditor {
359361
this.selectedElement = e.focus;
360362
}));
361363

364+
this._register(this.settingsTree.onDidBlur(() => {
365+
this.rowFocused.set(false);
366+
this.firstRowFocused.set(false);
367+
}));
368+
362369
this._register(this.settingsTree.onDidChangeSelection(e => {
363370
this.updateTreeScrollSync();
364371

365372
let firstRowFocused = false;
373+
let rowFocused = false;
366374
const selection: SettingsTreeElement = e.selection[0];
367375
if (selection) {
376+
rowFocused = true;
368377
if (this.searchResultModel) {
369378
firstRowFocused = selection.id === this.searchResultModel.getChildren()[0].id;
370379
} else {
@@ -373,6 +382,7 @@ export class SettingsEditor2 extends BaseEditor {
373382
}
374383
}
375384

385+
this.rowFocused.set(rowFocused);
376386
this.firstRowFocused.set(firstRowFocused);
377387
}));
378388

src/vs/workbench/parts/preferences/common/preferences.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ export interface IKeybindingsEditor extends IEditor {
6161
export const CONTEXT_SETTINGS_EDITOR = new RawContextKey<boolean>('inSettingsEditor', false);
6262
export const CONTEXT_SETTINGS_SEARCH_FOCUS = new RawContextKey<boolean>('inSettingsSearch', false);
6363
export const CONTEXT_SETTINGS_FIRST_ROW_FOCUS = new RawContextKey<boolean>('firstSettingRowFocused', false);
64+
export const CONTEXT_SETTINGS_ROW_FOCUS = new RawContextKey<boolean>('settingRowFocused', false);
6465
export const CONTEXT_KEYBINDINGS_EDITOR = new RawContextKey<boolean>('inKeybindings', false);
6566
export const CONTEXT_KEYBINDINGS_SEARCH_FOCUS = new RawContextKey<boolean>('inKeybindingsSearch', false);
6667
export const CONTEXT_KEYBINDING_FOCUS = new RawContextKey<boolean>('keybindingFocus', false);

src/vs/workbench/parts/preferences/electron-browser/preferences.contribution.ts

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ import { KeybindingsEditor } from 'vs/workbench/parts/preferences/browser/keybin
2222
import { OpenRawDefaultSettingsAction, OpenSettingsAction, OpenGlobalSettingsAction, OpenGlobalKeybindingsFileAction, OpenWorkspaceSettingsAction, OpenFolderSettingsAction, ConfigureLanguageBasedSettingsAction, OPEN_FOLDER_SETTINGS_COMMAND, OpenGlobalKeybindingsAction, OpenSettings2Action } from 'vs/workbench/parts/preferences/browser/preferencesActions';
2323
import {
2424
IKeybindingsEditor, IPreferencesSearchService, CONTEXT_KEYBINDING_FOCUS, CONTEXT_KEYBINDINGS_EDITOR, CONTEXT_KEYBINDINGS_SEARCH_FOCUS, KEYBINDINGS_EDITOR_COMMAND_DEFINE, KEYBINDINGS_EDITOR_COMMAND_REMOVE, KEYBINDINGS_EDITOR_COMMAND_SEARCH,
25-
KEYBINDINGS_EDITOR_COMMAND_COPY, KEYBINDINGS_EDITOR_COMMAND_RESET, KEYBINDINGS_EDITOR_COMMAND_COPY_COMMAND, KEYBINDINGS_EDITOR_COMMAND_SHOW_SIMILAR, KEYBINDINGS_EDITOR_COMMAND_FOCUS_KEYBINDINGS, KEYBINDINGS_EDITOR_COMMAND_CLEAR_SEARCH_RESULTS, SETTINGS_EDITOR_COMMAND_SEARCH, CONTEXT_SETTINGS_EDITOR, SETTINGS_EDITOR_COMMAND_FOCUS_FILE, CONTEXT_SETTINGS_SEARCH_FOCUS, SETTINGS_EDITOR_COMMAND_CLEAR_SEARCH_RESULTS, SETTINGS_EDITOR_COMMAND_FOCUS_NEXT_SETTING, SETTINGS_EDITOR_COMMAND_FOCUS_PREVIOUS_SETTING, SETTINGS_EDITOR_COMMAND_EDIT_FOCUSED_SETTING, SETTINGS_EDITOR_COMMAND_FOCUS_SEARCH_FROM_SETTINGS, SETTINGS_EDITOR_COMMAND_FOCUS_SETTINGS_FROM_SEARCH, CONTEXT_SETTINGS_FIRST_ROW_FOCUS
25+
KEYBINDINGS_EDITOR_COMMAND_COPY, KEYBINDINGS_EDITOR_COMMAND_RESET, KEYBINDINGS_EDITOR_COMMAND_COPY_COMMAND, KEYBINDINGS_EDITOR_COMMAND_SHOW_SIMILAR, KEYBINDINGS_EDITOR_COMMAND_FOCUS_KEYBINDINGS, KEYBINDINGS_EDITOR_COMMAND_CLEAR_SEARCH_RESULTS, SETTINGS_EDITOR_COMMAND_SEARCH, CONTEXT_SETTINGS_EDITOR, SETTINGS_EDITOR_COMMAND_FOCUS_FILE, CONTEXT_SETTINGS_SEARCH_FOCUS, SETTINGS_EDITOR_COMMAND_CLEAR_SEARCH_RESULTS, SETTINGS_EDITOR_COMMAND_FOCUS_NEXT_SETTING, SETTINGS_EDITOR_COMMAND_FOCUS_PREVIOUS_SETTING, SETTINGS_EDITOR_COMMAND_EDIT_FOCUSED_SETTING, SETTINGS_EDITOR_COMMAND_FOCUS_SEARCH_FROM_SETTINGS, SETTINGS_EDITOR_COMMAND_FOCUS_SETTINGS_FROM_SEARCH, CONTEXT_SETTINGS_FIRST_ROW_FOCUS, CONTEXT_SETTINGS_ROW_FOCUS
2626
} from 'vs/workbench/parts/preferences/common/preferences';
2727
import { IInstantiationService, ServicesAccessor } from 'vs/platform/instantiation/common/instantiation';
2828
import { IWorkbenchContributionsRegistry, Extensions as WorkbenchExtensions } from 'vs/workbench/common/contributions';
@@ -346,7 +346,6 @@ class StartSearchDefaultSettingsCommand extends SettingsCommand {
346346
preferencesEditor.focusSearch();
347347
}
348348
}
349-
350349
}
351350
const startSearchCommand = new StartSearchDefaultSettingsCommand({
352351
id: SETTINGS_EDITOR_COMMAND_SEARCH,
@@ -363,7 +362,6 @@ class FocusSearchFromSettingsCommand extends SettingsCommand {
363362
preferencesEditor.focusSearch();
364363
}
365364
}
366-
367365
}
368366
const focusSearchFromSettingsCommand = new FocusSearchFromSettingsCommand({
369367
id: SETTINGS_EDITOR_COMMAND_FOCUS_SEARCH_FROM_SETTINGS,
@@ -381,7 +379,6 @@ class ClearSearchResultsCommand extends SettingsCommand {
381379
preferencesEditor.clearSearchResults();
382380
}
383381
}
384-
385382
}
386383
const clearSearchResultsCommand = new ClearSearchResultsCommand({
387384
id: SETTINGS_EDITOR_COMMAND_CLEAR_SEARCH_RESULTS,
@@ -423,7 +420,6 @@ class FocusNextSearchResultCommand extends SettingsCommand {
423420
preferencesEditor.focusNextResult();
424421
}
425422
}
426-
427423
}
428424
const focusNextSearchResultCommand = new FocusNextSearchResultCommand({
429425
id: SETTINGS_EDITOR_COMMAND_FOCUS_NEXT_SETTING,
@@ -440,7 +436,6 @@ class FocusPreviousSearchResultCommand extends SettingsCommand {
440436
preferencesEditor.focusPreviousResult();
441437
}
442438
}
443-
444439
}
445440
const focusPreviousSearchResultCommand = new FocusPreviousSearchResultCommand({
446441
id: SETTINGS_EDITOR_COMMAND_FOCUS_PREVIOUS_SETTING,
@@ -457,7 +452,6 @@ class EditFocusedSettingCommand extends SettingsCommand {
457452
preferencesEditor.editFocusedPreference();
458453
}
459454
}
460-
461455
}
462456
const editFocusedSettingCommand = new EditFocusedSettingCommand({
463457
id: SETTINGS_EDITOR_COMMAND_EDIT_FOCUSED_SETTING,
@@ -474,12 +468,11 @@ class EditFocusedSettingCommand2 extends SettingsCommand {
474468
preferencesEditor.editSelectedSetting();
475469
}
476470
}
477-
478471
}
479472

480473
const editFocusedSettingCommand2 = new EditFocusedSettingCommand2({
481474
id: SETTINGS_EDITOR_COMMAND_EDIT_FOCUSED_SETTING,
482-
precondition: CONTEXT_SETTINGS_EDITOR,
475+
precondition: ContextKeyExpr.and(CONTEXT_SETTINGS_EDITOR, CONTEXT_SETTINGS_ROW_FOCUS),
483476
kbOpts: { primary: KeyCode.Enter }
484477
});
485478
KeybindingsRegistry.registerCommandAndKeybindingRule(editFocusedSettingCommand2.toCommandAndKeybindingRule(KeybindingsRegistry.WEIGHT.workbenchContrib()));

0 commit comments

Comments
 (0)