Skip to content

Commit 067d6cc

Browse files
authored
Add missing keydown handlers to Settings editor (microsoft#167000)
Add missing keydown event handlers Ref microsoft#159088
1 parent fb53973 commit 067d6cc

File tree

2 files changed

+32
-12
lines changed

2 files changed

+32
-12
lines changed

src/vs/workbench/contrib/preferences/browser/settingsEditorSettingIndicators.ts

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -295,17 +295,25 @@ export class SettingsTreeIndicatorsLabel implements IDisposable {
295295

296296
const overriddenScope = element.overriddenScopeList[0];
297297
const view = DOM.append(this.scopeOverridesIndicator.element, $('a.modified-scope', undefined, this.getInlineScopeDisplayText(overriddenScope)));
298-
this.scopeOverridesIndicator.disposables.add(
299-
DOM.addStandardDisposableListener(view, DOM.EventType.CLICK, (e) => {
300-
const [scope, language] = overriddenScope.split(':');
301-
onDidClickOverrideElement.fire({
302-
settingKey: element.setting.key,
303-
scope: scope as ScopeString,
304-
language
305-
});
306-
e.preventDefault();
307-
e.stopPropagation();
308-
}));
298+
const onClickOrKeydown = (e: UIEvent) => {
299+
const [scope, language] = overriddenScope.split(':');
300+
onDidClickOverrideElement.fire({
301+
settingKey: element.setting.key,
302+
scope: scope as ScopeString,
303+
language
304+
});
305+
e.preventDefault();
306+
e.stopPropagation();
307+
};
308+
this.scopeOverridesIndicator.disposables.add(DOM.addDisposableListener(view, DOM.EventType.CLICK, (e) => {
309+
onClickOrKeydown(e);
310+
}));
311+
this.scopeOverridesIndicator.disposables.add(DOM.addDisposableListener(view, DOM.EventType.KEY_DOWN, (e) => {
312+
const ev = new StandardKeyboardEvent(e);
313+
if (ev.equals(KeyCode.Space) || ev.equals(KeyCode.Enter)) {
314+
onClickOrKeydown(e);
315+
}
316+
}));
309317
} else {
310318
this.scopeOverridesIndicator.element.style.display = 'inline';
311319
this.scopeOverridesIndicator.element.classList.add('setting-indicator');

src/vs/workbench/contrib/preferences/browser/settingsTree.ts

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ import { ILanguageService } from 'vs/editor/common/languages/language';
6363
import { ConfigurationScope } from 'vs/platform/configuration/common/configurationRegistry';
6464
import { IUserDataProfilesService } from 'vs/platform/userDataProfile/common/userDataProfile';
6565
import { defaultButtonStyles, getInputBoxStyle } from 'vs/platform/theme/browser/defaultStyles';
66+
import { StandardKeyboardEvent } from 'vs/base/browser/keyboardEvent';
6667

6768
const $ = DOM.$;
6869

@@ -1078,12 +1079,23 @@ export class SettingComplexRenderer extends AbstractSettingRenderer implements I
10781079
? editLanguageSettingLabel
10791080
: SettingComplexRenderer.EDIT_IN_JSON_LABEL;
10801081

1081-
template.elementDisposables.add(DOM.addDisposableListener(template.button, DOM.EventType.CLICK, () => {
1082+
const onClickOrKeydown = (e: UIEvent) => {
10821083
if (isLanguageTagSetting) {
10831084
this._onApplyFilter.fire(`@${LANGUAGE_SETTING_TAG}${plainKey}`);
10841085
} else {
10851086
this._onDidOpenSettings.fire(dataElement.setting.key);
10861087
}
1088+
e.preventDefault();
1089+
e.stopPropagation();
1090+
};
1091+
template.elementDisposables.add(DOM.addDisposableListener(template.button, DOM.EventType.CLICK, (e) => {
1092+
onClickOrKeydown(e);
1093+
}));
1094+
template.elementDisposables.add(DOM.addDisposableListener(template.button, DOM.EventType.KEY_DOWN, (e) => {
1095+
const ev = new StandardKeyboardEvent(e);
1096+
if (ev.equals(KeyCode.Space) || ev.equals(KeyCode.Enter)) {
1097+
onClickOrKeydown(e);
1098+
}
10871099
}));
10881100

10891101
this.renderValidations(dataElement, template);

0 commit comments

Comments
 (0)