@@ -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
0 commit comments