Skip to content

Commit dc0b20c

Browse files
authored
Merge pull request microsoft#205911 from microsoft/merogge/fix-signal-bugs
fix accessibility signal validation warning, add go to settings file action when button is triggered
2 parents 92db21f + ccb571b commit dc0b20c

File tree

2 files changed

+20
-8
lines changed

2 files changed

+20
-8
lines changed

src/vs/workbench/contrib/accessibility/browser/accessibilityConfiguration.ts

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ export const announcementFeatureBase: IConfigurationPropertySchema = {
115115
const defaultNoAnnouncement: IConfigurationPropertySchema = {
116116
'type': 'object',
117117
'tags': ['accessibility'],
118-
additionalProperties: true,
118+
additionalProperties: false,
119119
'default': {
120120
'sound': 'auto',
121121
}
@@ -536,7 +536,6 @@ const configuration: IConfigurationNode = {
536536
},
537537
'accessibility.signals.chatResponseReceived': {
538538
...defaultNoAnnouncement,
539-
additionalProperties: false,
540539
'description': localize('accessibility.signals.chatResponseReceived', "Indicates when the response has been received."),
541540
'properties': {
542541
'sound': {
@@ -562,7 +561,7 @@ const configuration: IConfigurationNode = {
562561
'accessibility.signals.save': {
563562
'type': 'object',
564563
'tags': ['accessibility'],
565-
additionalProperties: true,
564+
additionalProperties: false,
566565
'markdownDescription': localize('accessibility.signals.save', "Plays a signal when a file is saved."),
567566
'properties': {
568567
'sound': {
@@ -596,7 +595,7 @@ const configuration: IConfigurationNode = {
596595
'accessibility.signals.format': {
597596
'type': 'object',
598597
'tags': ['accessibility'],
599-
additionalProperties: true,
598+
additionalProperties: false,
600599
'markdownDescription': localize('accessibility.signals.format', "Plays a signal when a file or notebook is formatted."),
601600
'properties': {
602601
'sound': {
@@ -621,6 +620,10 @@ const configuration: IConfigurationNode = {
621620
localize('accessibility.signals.format.announcement.never', "Never announces.")
622621
],
623622
},
623+
},
624+
default: {
625+
'sound': 'never',
626+
'announcement': 'never'
624627
}
625628
},
626629
}
@@ -831,7 +834,7 @@ Registry.as<IConfigurationMigrationRegistry>(WorkbenchExtensions.ConfigurationMi
831834
})));
832835

833836
Registry.as<IConfigurationMigrationRegistry>(WorkbenchExtensions.ConfigurationMigration)
834-
.registerConfigurationMigrations(AccessibilitySignal.allAccessibilitySignals.filter(i => !!i.announcementMessage).map(item => ({
837+
.registerConfigurationMigrations(AccessibilitySignal.allAccessibilitySignals.filter(i => !!i.legacyAnnouncementSettingsKey).map(item => ({
835838
key: item.legacyAnnouncementSettingsKey!,
836839
migrateFn: (announcement, accessor) => {
837840
const configurationKeyValuePairs: ConfigurationKeyValuePairs = [];

src/vs/workbench/contrib/accessibilitySignals/browser/commands.ts

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import { AccessibilitySignal, IAccessibilitySignalService } from 'vs/platform/ac
1212
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
1313
import { ServicesAccessor } from 'vs/platform/instantiation/common/instantiation';
1414
import { IQuickInputService, IQuickPickItem } from 'vs/platform/quickinput/common/quickInput';
15+
import { IPreferencesService } from 'vs/workbench/services/preferences/common/preferences';
1516

1617
export class ShowSignalSoundHelp extends Action2 {
1718
static readonly ID = 'signals.sounds.help';
@@ -32,6 +33,7 @@ export class ShowSignalSoundHelp extends Action2 {
3233
const quickInputService = accessor.get(IQuickInputService);
3334
const configurationService = accessor.get(IConfigurationService);
3435
const accessibilityService = accessor.get(IAccessibilityService);
36+
const preferencesService = accessor.get(IPreferencesService);
3537
const userGestureSignals = [AccessibilitySignal.save, AccessibilitySignal.format];
3638
const items: (IQuickPickItem & { signal: AccessibilitySignal })[] = AccessibilitySignal.allAccessibilitySignals.map((signal, idx) => ({
3739
label: userGestureSignals.includes(signal) ? `${signal.name} (${configurationService.getValue(signal.settingsKey + '.sound')})` : signal.name,
@@ -68,6 +70,9 @@ export class ShowSignalSoundHelp extends Action2 {
6870
}
6971
qp.hide();
7072
});
73+
qp.onDidTriggerItemButton(e => {
74+
preferencesService.openUserSettings({ jsonEditor: true, revealSetting: { key: e.item.signal.settingsKey, edit: true } });
75+
});
7176
qp.onDidChangeActive(() => {
7277
accessibilitySignalService.playSound(qp.activeItems[0].signal.sound.getSound(true), true);
7378
});
@@ -96,22 +101,23 @@ export class ShowAccessibilityAnnouncementHelp extends Action2 {
96101
const quickInputService = accessor.get(IQuickInputService);
97102
const configurationService = accessor.get(IConfigurationService);
98103
const accessibilityService = accessor.get(IAccessibilityService);
104+
const preferencesService = accessor.get(IPreferencesService);
99105
const userGestureSignals = [AccessibilitySignal.save, AccessibilitySignal.format];
100-
const items: (IQuickPickItem & { signal: AccessibilitySignal })[] = AccessibilitySignal.allAccessibilitySignals.filter(c => !!c.announcementMessage).map((signal, idx) => ({
106+
const items: (IQuickPickItem & { signal: AccessibilitySignal })[] = AccessibilitySignal.allAccessibilitySignals.filter(c => !!c.legacyAnnouncementSettingsKey).map((signal, idx) => ({
101107
label: userGestureSignals.includes(signal) ? `${signal.name} (${configurationService.getValue(signal.settingsKey + '.announcement')})` : signal.name,
102108
signal,
103109
buttons: userGestureSignals.includes(signal) ? [{
104110
iconClass: ThemeIcon.asClassName(Codicon.settingsGear),
105111
tooltip: localize('announcement.help.settings', 'Enable/Disable Announcement'),
106-
alwaysVisible: true
112+
alwaysVisible: true,
107113
}] : []
108114
}));
109115
const qp = quickInputService.createQuickPick<IQuickPickItem & { signal: AccessibilitySignal }>();
110116
qp.items = items;
111117
qp.selectedItems = items.filter(i => accessibilitySignalService.isAnnouncementEnabled(i.signal) || userGestureSignals.includes(i.signal) && configurationService.getValue(i.signal.settingsKey + '.announcement') !== 'never');
112118
qp.onDidAccept(() => {
113119
const enabledAnnouncements = qp.selectedItems.map(i => i.signal);
114-
const disabledAnnouncements = AccessibilitySignal.allAccessibilitySignals.filter(cue => !enabledAnnouncements.includes(cue));
120+
const disabledAnnouncements = AccessibilitySignal.allAccessibilitySignals.filter(cue => !!cue.legacyAnnouncementSettingsKey && !enabledAnnouncements.includes(cue));
115121
for (const signal of enabledAnnouncements) {
116122
let { sound, announcement } = configurationService.getValue<{ sound: string; announcement?: string }>(signal.settingsKey);
117123
announcement = userGestureSignals.includes(signal) ? 'userGesture' : signal.announcementMessage && accessibilityService.isScreenReaderOptimized() ? 'auto' : undefined;
@@ -124,6 +130,9 @@ export class ShowAccessibilityAnnouncementHelp extends Action2 {
124130
}
125131
qp.hide();
126132
});
133+
qp.onDidTriggerItemButton(e => {
134+
preferencesService.openUserSettings({ jsonEditor: true, revealSetting: { key: e.item.signal.settingsKey, edit: true } });
135+
});
127136
qp.placeholder = localize('announcement.help.placeholder', 'Select an announcement to configure');
128137
qp.canSelectMany = true;
129138
await qp.show();

0 commit comments

Comments
 (0)