Skip to content

Commit 47ed486

Browse files
author
isidor
committed
explorer: improve aria-level computation of compact folders
microsoft#107235
1 parent ea78dd7 commit 47ed486

2 files changed

Lines changed: 19 additions & 2 deletions

File tree

src/vs/base/browser/ui/tree/abstractTree.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,7 @@ function asListOptions<T, TFilterData, TRef>(modelProvider: () => ITreeModel<T,
186186
return options.accessibilityProvider!.getWidgetAriaLabel();
187187
},
188188
getWidgetRole: options.accessibilityProvider && options.accessibilityProvider.getWidgetRole ? () => options.accessibilityProvider!.getWidgetRole!() : () => 'tree',
189-
getAriaLevel(node) {
189+
getAriaLevel: options.accessibilityProvider && options.accessibilityProvider.getAriaLevel ? (node) => options.accessibilityProvider!.getAriaLevel!(node.element) : (node) => {
190190
return node.depth;
191191
},
192192
getActiveDescendantId: options.accessibilityProvider.getActiveDescendantId && (node => {

src/vs/workbench/contrib/files/browser/views/explorerViewer.ts

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -255,7 +255,8 @@ export class FilesRenderer implements ICompressibleTreeRenderer<ExplorerItem, Fu
255255
@IThemeService private readonly themeService: IThemeService,
256256
@IConfigurationService private readonly configurationService: IConfigurationService,
257257
@IExplorerService private readonly explorerService: IExplorerService,
258-
@ILabelService private readonly labelService: ILabelService
258+
@ILabelService private readonly labelService: ILabelService,
259+
@IWorkspaceContextService private readonly contextService: IWorkspaceContextService
259260
) {
260261
this.config = this.configurationService.getValue<IFilesConfiguration>();
261262
this.configListener = this.configurationService.onDidChangeConfiguration(e => {
@@ -491,6 +492,22 @@ export class FilesRenderer implements ICompressibleTreeRenderer<ExplorerItem, Fu
491492
return element.name;
492493
}
493494

495+
getAriaLevel(element: ExplorerItem): number {
496+
// We need to comput aria level on our own since children of compact folders will otherwise have an incorrect level #107235
497+
let depth = 0;
498+
let parent = element.parent;
499+
while (parent) {
500+
parent = parent.parent;
501+
depth++;
502+
}
503+
504+
if (this.contextService.getWorkbenchState() === WorkbenchState.WORKSPACE) {
505+
depth = depth + 1;
506+
}
507+
508+
return depth;
509+
}
510+
494511
getActiveDescendantId(stat: ExplorerItem): string | undefined {
495512
const compressedNavigationController = this.compressedNavigationControllers.get(stat);
496513
return compressedNavigationController?.currentId;

0 commit comments

Comments
 (0)