Merge pull request #2128 from Tyriar/1965_optimize_a11y

Only update a11y announcements on animation frame
This commit is contained in:
Daniel Imms
2019-05-25 19:03:22 -07:00
committed by GitHub
+10 -9
View File
@@ -43,6 +43,8 @@ export class AccessibilityManager extends Disposable {
*/
private _charsToConsume: string[] = [];
private _charsToAnnounce: string = '';
constructor(
private _terminal: ITerminal,
private _dimensions: IRenderDimensions
@@ -202,10 +204,10 @@ export class AccessibilityManager extends Disposable {
// Have the screen reader ignore the char if it was just input
const shiftedChar = this._charsToConsume.shift();
if (shiftedChar !== char) {
this._announceCharacter(char);
this._charsToAnnounce += char;
}
} else {
this._announceCharacter(char);
this._charsToAnnounce += char;
}
if (char === '\n') {
@@ -260,6 +262,7 @@ export class AccessibilityManager extends Disposable {
element.setAttribute('aria-setsize', setSize);
}
}
this._announceCharacters();
}
private _refreshRowsDimensions(): void {
@@ -283,13 +286,11 @@ export class AccessibilityManager extends Disposable {
element.style.height = `${this._dimensions.actualCellHeight}px`;
}
private _announceCharacter(char: string): void {
if (char === ' ') {
// Always use nbsp for spaces in order to preserve the space between characters in
// voiceover's caption window
this._liveRegion.innerHTML += ' ';
} else {
this._liveRegion.textContent += char;
private _announceCharacters(): void {
if (this._charsToAnnounce.length === 0) {
return;
}
this._liveRegion.textContent += this._charsToAnnounce;
this._charsToAnnounce = '';
}
}