diff --git a/src/vs/base/browser/ui/list/listWidget.ts b/src/vs/base/browser/ui/list/listWidget.ts index 0e3598aa839..84bfcd04080 100644 --- a/src/vs/base/browser/ui/list/listWidget.ts +++ b/src/vs/base/browser/ui/list/listWidget.ts @@ -651,6 +651,7 @@ export class List implements ISpliceable, IDisposable { if (options.ariaLabel) { this.view.domNode.setAttribute('aria-label', options.ariaLabel); } + this.view.domNode.setAttribute('aria-setsize', this.length.toString()); this.style(options); } @@ -658,8 +659,8 @@ export class List implements ISpliceable, IDisposable { splice(start: number, deleteCount: number, elements: T[] = []): void { this.eventBufferer.bufferEvents(() => { this.spliceable.splice(start, deleteCount, elements); - this.view.domNode.setAttribute('aria-setsize', this.length.toString()); }); + this.view.domNode.setAttribute('aria-setsize', this.length.toString()); } get length(): number { @@ -715,7 +716,11 @@ export class List implements ISpliceable, IDisposable { setFocus(indexes: number[]): void { indexes = indexes.sort(numericSort); this.focus.set(indexes); - this.view.domNode.setAttribute('aria-posinset', indexes.length ? (indexes[0] + 1).toString() : undefined); + if (indexes.length) { + this.view.domNode.setAttribute('aria-posinset', (indexes[0] + 1).toString()); + } else { + this.view.domNode.removeAttribute('aria-posinset'); + } } focusNext(n = 1, loop = false): void {