@@ -26,7 +26,7 @@ export interface IAccessibilitySignalService {
26
26
playSignalLoop ( signal : AccessibilitySignal , milliseconds : number ) : IDisposable ;
27
27
28
28
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 ;
30
30
/**
31
31
* Avoid this method and prefer `.playSignal`!
32
32
* 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
241
241
return this . getEnabledState ( signal , false ) . onDidChange ;
242
242
}
243
243
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 ;
248
258
}
249
259
}
250
260
0 commit comments