@@ -30,6 +30,7 @@ import { ITreeEvent, ITreeRenderer, IAsyncDataSource, IDataSource, ITreeMouseEve
3030import { AsyncDataTree , IAsyncDataTreeOptions } from 'vs/base/browser/ui/tree/asyncDataTree' ;
3131import { DataTree , IDataTreeOptions } from 'vs/base/browser/ui/tree/dataTree' ;
3232import { IKeyboardNavigationEventFilter } from 'vs/base/browser/ui/tree/abstractTree' ;
33+ import { IAccessibilityService , AccessibilitySupport } from 'vs/platform/accessibility/common/accessibility' ;
3334
3435export type ListWidget = List < any > | PagedList < any > | ITree | ObjectTree < any , any > | DataTree < any , any , any > | AsyncDataTree < any , any , any > ;
3536
@@ -785,7 +786,8 @@ export class WorkbenchObjectTree<T extends NonNullable<any>, TFilterData = void>
785786 @IListService listService : IListService ,
786787 @IThemeService themeService : IThemeService ,
787788 @IConfigurationService configurationService : IConfigurationService ,
788- @IKeybindingService keybindingService : IKeybindingService
789+ @IKeybindingService keybindingService : IKeybindingService ,
790+ @IAccessibilityService accessibilityService : IAccessibilityService
789791 ) {
790792 WorkbenchListSupportsKeyboardNavigation . bindTo ( contextKeyService ) ;
791793
@@ -805,7 +807,8 @@ export class WorkbenchObjectTree<T extends NonNullable<any>, TFilterData = void>
805807 return automaticKeyboardNavigation ;
806808 } ;
807809
808- const keyboardNavigation = configurationService . getValue < string > ( keyboardNavigationSettingKey ) ;
810+ const accessibilityOn = accessibilityService . getAccessibilitySupport ( ) === AccessibilitySupport . Enabled ;
811+ const keyboardNavigation = accessibilityOn ? 'simple' : configurationService . getValue < string > ( keyboardNavigationSettingKey ) ;
809812 const horizontalScrolling = typeof options . horizontalScrolling !== 'undefined' ? options . horizontalScrolling : getHorizontalScrollingSetting ( configurationService ) ;
810813 const openOnSingleClick = useSingleClickToOpen ( configurationService ) ;
811814 const [ workbenchListOptions , workbenchListOptionsDisposable ] = toWorkbenchListOptions ( options , configurationService , keybindingService ) ;
@@ -839,6 +842,14 @@ export class WorkbenchObjectTree<T extends NonNullable<any>, TFilterData = void>
839842
840843 const interestingContextKeys = new Set ( ) ;
841844 interestingContextKeys . add ( WorkbenchListAutomaticKeyboardNavigationKey ) ;
845+ const updateKeyboardNavigation = ( ) => {
846+ const accessibilityOn = accessibilityService . getAccessibilitySupport ( ) === AccessibilitySupport . Enabled ;
847+ const keyboardNavigation = accessibilityOn ? 'simple' : configurationService . getValue < string > ( keyboardNavigationSettingKey ) ;
848+ this . updateOptions ( {
849+ simpleKeyboardNavigation : keyboardNavigation === 'simple' ,
850+ filterOnType : keyboardNavigation === 'filter'
851+ } ) ;
852+ } ;
842853
843854 this . disposables . push (
844855 this . contextKeyService ,
@@ -870,11 +881,7 @@ export class WorkbenchObjectTree<T extends NonNullable<any>, TFilterData = void>
870881 this . updateOptions ( { indent } ) ;
871882 }
872883 if ( e . affectsConfiguration ( keyboardNavigationSettingKey ) ) {
873- const keyboardNavigation = configurationService . getValue < string > ( keyboardNavigationSettingKey ) ;
874- this . updateOptions ( {
875- simpleKeyboardNavigation : keyboardNavigation === 'simple' ,
876- filterOnType : keyboardNavigation === 'filter'
877- } ) ;
884+ updateKeyboardNavigation ( ) ;
878885 }
879886 if ( e . affectsConfiguration ( automaticKeyboardNavigationSettingKey ) ) {
880887 this . updateOptions ( { automaticKeyboardNavigation : getAutomaticKeyboardNavigation ( ) } ) ;
@@ -884,7 +891,8 @@ export class WorkbenchObjectTree<T extends NonNullable<any>, TFilterData = void>
884891 if ( e . affectsSome ( interestingContextKeys ) ) {
885892 this . updateOptions ( { automaticKeyboardNavigation : getAutomaticKeyboardNavigation ( ) } ) ;
886893 }
887- } )
894+ } ) ,
895+ accessibilityService . onDidChangeAccessibilitySupport ( ( ) => updateKeyboardNavigation ( ) )
888896 ) ;
889897 }
890898
@@ -918,7 +926,8 @@ export class WorkbenchDataTree<TInput, T, TFilterData = void> extends DataTree<T
918926 @IListService listService : IListService ,
919927 @IThemeService themeService : IThemeService ,
920928 @IConfigurationService configurationService : IConfigurationService ,
921- @IKeybindingService keybindingService : IKeybindingService
929+ @IKeybindingService keybindingService : IKeybindingService ,
930+ @IAccessibilityService accessibilityService : IAccessibilityService
922931 ) {
923932 WorkbenchListSupportsKeyboardNavigation . bindTo ( contextKeyService ) ;
924933
@@ -938,7 +947,8 @@ export class WorkbenchDataTree<TInput, T, TFilterData = void> extends DataTree<T
938947 return automaticKeyboardNavigation ;
939948 } ;
940949
941- const keyboardNavigation = configurationService . getValue < string > ( keyboardNavigationSettingKey ) ;
950+ const accessibilityOn = accessibilityService . getAccessibilitySupport ( ) === AccessibilitySupport . Enabled ;
951+ const keyboardNavigation = accessibilityOn ? 'simple' : configurationService . getValue < string > ( keyboardNavigationSettingKey ) ;
942952 const horizontalScrolling = typeof options . horizontalScrolling !== 'undefined' ? options . horizontalScrolling : getHorizontalScrollingSetting ( configurationService ) ;
943953 const openOnSingleClick = useSingleClickToOpen ( configurationService ) ;
944954 const [ workbenchListOptions , workbenchListOptionsDisposable ] = toWorkbenchListOptions ( options , configurationService , keybindingService ) ;
@@ -972,6 +982,14 @@ export class WorkbenchDataTree<TInput, T, TFilterData = void> extends DataTree<T
972982
973983 const interestingContextKeys = new Set ( ) ;
974984 interestingContextKeys . add ( WorkbenchListAutomaticKeyboardNavigationKey ) ;
985+ const updateKeyboardNavigation = ( ) => {
986+ const accessibilityOn = accessibilityService . getAccessibilitySupport ( ) === AccessibilitySupport . Enabled ;
987+ const keyboardNavigation = accessibilityOn ? 'simple' : configurationService . getValue < string > ( keyboardNavigationSettingKey ) ;
988+ this . updateOptions ( {
989+ simpleKeyboardNavigation : keyboardNavigation === 'simple' ,
990+ filterOnType : keyboardNavigation === 'filter'
991+ } ) ;
992+ } ;
975993
976994 this . disposables . push (
977995 this . contextKeyService ,
@@ -1003,11 +1021,7 @@ export class WorkbenchDataTree<TInput, T, TFilterData = void> extends DataTree<T
10031021 this . updateOptions ( { indent } ) ;
10041022 }
10051023 if ( e . affectsConfiguration ( keyboardNavigationSettingKey ) ) {
1006- const keyboardNavigation = configurationService . getValue < string > ( keyboardNavigationSettingKey ) ;
1007- this . updateOptions ( {
1008- simpleKeyboardNavigation : keyboardNavigation === 'simple' ,
1009- filterOnType : keyboardNavigation === 'filter'
1010- } ) ;
1024+ updateKeyboardNavigation ( ) ;
10111025 }
10121026 if ( e . affectsConfiguration ( automaticKeyboardNavigationSettingKey ) ) {
10131027 this . updateOptions ( { automaticKeyboardNavigation : getAutomaticKeyboardNavigation ( ) } ) ;
@@ -1017,7 +1031,8 @@ export class WorkbenchDataTree<TInput, T, TFilterData = void> extends DataTree<T
10171031 if ( e . affectsSome ( interestingContextKeys ) ) {
10181032 this . updateOptions ( { automaticKeyboardNavigation : getAutomaticKeyboardNavigation ( ) } ) ;
10191033 }
1020- } )
1034+ } ) ,
1035+ accessibilityService . onDidChangeAccessibilitySupport ( ( ) => updateKeyboardNavigation ( ) )
10211036 ) ;
10221037 }
10231038
@@ -1046,7 +1061,8 @@ export class WorkbenchAsyncDataTree<TInput, T, TFilterData = void> extends Async
10461061 @IListService listService : IListService ,
10471062 @IThemeService themeService : IThemeService ,
10481063 @IConfigurationService configurationService : IConfigurationService ,
1049- @IKeybindingService keybindingService : IKeybindingService
1064+ @IKeybindingService keybindingService : IKeybindingService ,
1065+ @IAccessibilityService accessibilityService : IAccessibilityService
10501066 ) {
10511067 WorkbenchListSupportsKeyboardNavigation . bindTo ( contextKeyService ) ;
10521068
@@ -1066,7 +1082,8 @@ export class WorkbenchAsyncDataTree<TInput, T, TFilterData = void> extends Async
10661082 return automaticKeyboardNavigation ;
10671083 } ;
10681084
1069- const keyboardNavigation = configurationService . getValue < string > ( keyboardNavigationSettingKey ) ;
1085+ const accessibilityOn = accessibilityService . getAccessibilitySupport ( ) === AccessibilitySupport . Enabled ;
1086+ const keyboardNavigation = accessibilityOn ? 'simple' : configurationService . getValue < string > ( keyboardNavigationSettingKey ) ;
10701087 const horizontalScrolling = typeof options . horizontalScrolling !== 'undefined' ? options . horizontalScrolling : getHorizontalScrollingSetting ( configurationService ) ;
10711088 const openOnSingleClick = useSingleClickToOpen ( configurationService ) ;
10721089 const [ workbenchListOptions , workbenchListOptionsDisposable ] = toWorkbenchListOptions ( options , configurationService , keybindingService ) ;
@@ -1100,6 +1117,14 @@ export class WorkbenchAsyncDataTree<TInput, T, TFilterData = void> extends Async
11001117
11011118 const interestingContextKeys = new Set ( ) ;
11021119 interestingContextKeys . add ( WorkbenchListAutomaticKeyboardNavigationKey ) ;
1120+ const updateKeyboardNavigation = ( ) => {
1121+ const accessibilityOn = accessibilityService . getAccessibilitySupport ( ) === AccessibilitySupport . Enabled ;
1122+ const keyboardNavigation = accessibilityOn ? 'simple' : configurationService . getValue < string > ( keyboardNavigationSettingKey ) ;
1123+ this . updateOptions ( {
1124+ simpleKeyboardNavigation : keyboardNavigation === 'simple' ,
1125+ filterOnType : keyboardNavigation === 'filter'
1126+ } ) ;
1127+ } ;
11031128
11041129 this . disposables . push (
11051130 this . contextKeyService ,
@@ -1131,11 +1156,7 @@ export class WorkbenchAsyncDataTree<TInput, T, TFilterData = void> extends Async
11311156 this . updateOptions ( { indent } ) ;
11321157 }
11331158 if ( e . affectsConfiguration ( keyboardNavigationSettingKey ) ) {
1134- const keyboardNavigation = configurationService . getValue < string > ( keyboardNavigationSettingKey ) ;
1135- this . updateOptions ( {
1136- simpleKeyboardNavigation : keyboardNavigation === 'simple' ,
1137- filterOnType : keyboardNavigation === 'filter'
1138- } ) ;
1159+ updateKeyboardNavigation ( ) ;
11391160 }
11401161 if ( e . affectsConfiguration ( automaticKeyboardNavigationSettingKey ) ) {
11411162 this . updateOptions ( { automaticKeyboardNavigation : getAutomaticKeyboardNavigation ( ) } ) ;
@@ -1145,7 +1166,8 @@ export class WorkbenchAsyncDataTree<TInput, T, TFilterData = void> extends Async
11451166 if ( e . affectsSome ( interestingContextKeys ) ) {
11461167 this . updateOptions ( { automaticKeyboardNavigation : getAutomaticKeyboardNavigation ( ) } ) ;
11471168 }
1148- } )
1169+ } ) ,
1170+ accessibilityService . onDidChangeAccessibilitySupport ( ( ) => updateKeyboardNavigation ( ) )
11491171 ) ;
11501172 }
11511173
0 commit comments