Skip to content

Commit 6c92d3f

Browse files
authored
fix accessibility signals bug (#214795)
fix #214698
1 parent 2bf5bb3 commit 6c92d3f

File tree

2 files changed

+16
-6
lines changed

2 files changed

+16
-6
lines changed

src/vs/platform/accessibilitySignal/browser/accessibilitySignalService.ts

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ export interface IAccessibilitySignalService {
2626
playSignalLoop(signal: AccessibilitySignal, milliseconds: number): IDisposable;
2727

2828
getEnabledState(signal: AccessibilitySignal, userGesture: boolean, modality?: AccessibilityModality | undefined): IValueWithChangeEvent<boolean>;
29-
getDelayMs(signal: AccessibilitySignal, modality: AccessibilityModality): number;
29+
getDelayMs(signal: AccessibilitySignal, modality: AccessibilityModality, mode: 'line' | 'positional'): number;
3030
/**
3131
* Avoid this method and prefer `.playSignal`!
3232
* Only use it when you want to play the sound regardless of enablement, e.g. in the settings quick pick.
@@ -241,10 +241,20 @@ export class AccessibilitySignalService extends Disposable implements IAccessibi
241241
return this.getEnabledState(signal, false).onDidChange;
242242
}
243243

244-
public getDelayMs(signal: AccessibilitySignal, modality: AccessibilityModality): number {
245-
const delaySettingsKey = signal.delaySettingsKey ?? 'accessibility.signalOptions.delays.general';
246-
const delaySettingsValue: { sound: number; announcement: number } = this.configurationService.getValue(delaySettingsKey);
247-
return modality === 'sound' ? delaySettingsValue.sound : delaySettingsValue.announcement;
244+
public getDelayMs(signal: AccessibilitySignal, modality: AccessibilityModality, mode: 'line' | 'positional'): number {
245+
const options: { debouncePositionChanges: boolean; 'experimental.delays': { general: { sound: number; announcement: number }; errorAtPosition: { sound: number; announcement: number }; warningAtPosition: { sound: number; announcement: number } } } = this.configurationService.getValue('accessibility.signalOptions');
246+
if (!options || !options.debouncePositionChanges) {
247+
return 0;
248+
}
249+
let value: { sound: number; announcement: number };
250+
if (signal.name === AccessibilitySignal.errorAtPosition.name && mode === 'positional') {
251+
value = options['experimental.delays'].errorAtPosition;
252+
} else if (signal.name === AccessibilitySignal.warningAtPosition.name && mode === 'positional') {
253+
value = options['experimental.delays'].warningAtPosition;
254+
} else {
255+
value = options['experimental.delays'].general;
256+
}
257+
return modality === 'sound' ? value.sound : value.announcement;
248258
}
249259
}
250260

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ export class EditorTextPropertySignalsContribution extends Disposable implements
104104

105105
for (const modality of ['sound', 'announcement'] as AccessibilityModality[]) {
106106
if (this._accessibilitySignalService.getEnabledState(signal, false, modality).value) {
107-
const delay = this._accessibilitySignalService.getDelayMs(signal, modality) + (didType.get() ? 1000 : 0);
107+
const delay = this._accessibilitySignalService.getDelayMs(signal, modality, mode) + (didType.get() ? 1000 : 0);
108108

109109
timeouts.add(disposableTimeout(() => {
110110
if (source.isPresent(position, mode, undefined)) {

0 commit comments

Comments
 (0)