Skip to content

Commit 9895691

Browse files
authored
use content editable (#4376)
1 parent 77870b0 commit 9895691

File tree

1 file changed

+11
-5
lines changed

1 file changed

+11
-5
lines changed

src/browser/AccessibilityManager.ts

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -92,9 +92,7 @@ export class AccessibilityManager extends Disposable {
9292
this._accessiblityBuffer = document.createElement('div');
9393
this._accessiblityBuffer.ariaLabel = Strings.accessibilityBuffer;
9494
this._accessiblityBuffer.classList.add('xterm-accessibility-buffer');
95-
96-
// HACK: this is needed when content editable is false
97-
this._refreshAccessibilityBuffer();
95+
this._accessiblityBuffer.contentEditable = 'true';
9896
this._accessiblityBuffer.addEventListener('focus', () => this._refreshAccessibilityBuffer());
9997
this._terminal.element.insertAdjacentElement('afterbegin', this._accessiblityBuffer);
10098

@@ -325,16 +323,24 @@ export class AccessibilityManager extends Disposable {
325323
return;
326324
}
327325

328-
const { bufferElements } = this._terminal.viewport.getBufferElements(0);
326+
const { bufferElements, cursorElement } = this._terminal.viewport.getBufferElements(0);
329327
for (const element of bufferElements) {
330328
if (element.textContent) {
331329
element.textContent = element.textContent.replace(new RegExp(' ', 'g'), '\xA0');
332330
}
333331
}
334-
this._accessiblityBuffer.tabIndex = 0;
335332
this._accessiblityBuffer.ariaRoleDescription = 'document';
336333
this._accessiblityBuffer.replaceChildren(...bufferElements);
337334
this._accessiblityBuffer.scrollTop = this._accessiblityBuffer.scrollHeight;
335+
const s = document.getSelection();
336+
if (s && cursorElement) {
337+
s.removeAllRanges();
338+
const r = document.createRange();
339+
r.selectNode(bufferElements[bufferElements.length - 1]);
340+
r.setStart(cursorElement, 0);
341+
r.setEnd(cursorElement, 0);
342+
s.addRange(r);
343+
}
338344
this._accessiblityBuffer.focus();
339345
}
340346

0 commit comments

Comments
 (0)