Merge pull request #209270 from microsoft/merogge/qp-bug

fix accessibility signal qp bug
This commit is contained in:
Megan Rogge 2024-04-01 10:07:41 -07:00 committed by GitHub
commit e4f949b7d5
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -59,14 +59,12 @@ export class ShowSignalSoundHelp extends Action2 {
configurationService.updateValue(signal.settingsKey, { sound });
}
}
for (const signal of disabledSounds) {
let { sound, announcement } = configurationService.getValue<{ sound: string; announcement?: string }>(signal.settingsKey);
sound = userGestureSignals.includes(signal) ? 'never' : 'off';
if (announcement) {
configurationService.updateValue(signal.settingsKey, { sound, announcement });
} else {
configurationService.updateValue(signal.settingsKey, { sound });
}
const announcement = configurationService.getValue(signal.settingsKey + '.announcement');
const sound = getDisabledSettingValue(userGestureSignals.includes(signal), accessibilityService.isScreenReaderOptimized());
const value = announcement ? { sound, announcement } : { sound };
configurationService.updateValue(signal.settingsKey, value);
}
qp.hide();
});
@ -82,6 +80,10 @@ export class ShowSignalSoundHelp extends Action2 {
}
}
function getDisabledSettingValue(isUserGestureSignal: boolean, isScreenReaderOptimized: boolean): string {
return isScreenReaderOptimized ? (isUserGestureSignal ? 'never' : 'off') : (isUserGestureSignal ? 'never' : 'auto');
}
export class ShowAccessibilityAnnouncementHelp extends Action2 {
static readonly ID = 'accessibility.announcement.help';
@ -115,7 +117,13 @@ export class ShowAccessibilityAnnouncementHelp extends Action2 {
const qp = quickInputService.createQuickPick<IQuickPickItem & { signal: AccessibilitySignal }>();
qp.items = items;
qp.selectedItems = items.filter(i => accessibilitySignalService.isAnnouncementEnabled(i.signal) || userGestureSignals.includes(i.signal) && configurationService.getValue(i.signal.settingsKey + '.announcement') !== 'never');
const screenReaderOptimized = accessibilityService.isScreenReaderOptimized();
qp.onDidAccept(() => {
if (!screenReaderOptimized) {
// announcements are off by default when screen reader is not active
qp.hide();
return;
}
const enabledAnnouncements = qp.selectedItems.map(i => i.signal);
const disabledAnnouncements = AccessibilitySignal.allAccessibilitySignals.filter(cue => !!cue.legacyAnnouncementSettingsKey && !enabledAnnouncements.includes(cue));
for (const signal of enabledAnnouncements) {
@ -123,17 +131,19 @@ export class ShowAccessibilityAnnouncementHelp extends Action2 {
announcement = userGestureSignals.includes(signal) ? 'userGesture' : signal.announcementMessage && accessibilityService.isScreenReaderOptimized() ? 'auto' : undefined;
configurationService.updateValue(signal.settingsKey, { sound, announcement });
}
for (const signal of disabledAnnouncements) {
const announcement = userGestureSignals.includes(signal) ? 'never' : 'off';
const announcement = getDisabledSettingValue(userGestureSignals.includes(signal), true);
const sound = configurationService.getValue(signal.settingsKey + '.sound');
configurationService.updateValue(signal.settingsKey, announcement ? { sound, announcement } : { sound });
const value = announcement ? { sound, announcement } : { sound };
configurationService.updateValue(signal.settingsKey, value);
}
qp.hide();
});
qp.onDidTriggerItemButton(e => {
preferencesService.openUserSettings({ jsonEditor: true, revealSetting: { key: e.item.signal.settingsKey, edit: true } });
});
qp.placeholder = localize('announcement.help.placeholder', 'Select an announcement to configure');
qp.placeholder = screenReaderOptimized ? localize('announcement.help.placeholder', 'Select an announcement to configure') : localize('announcement.help.placeholder.disabled', 'Screen reader is not active, announcements are disabled by default.');
qp.canSelectMany = true;
await qp.show();
}