[PR #10971] Ensure automation peer is created regardless of terminal initialization #28330

Open
opened 2026-01-31 09:27:50 +00:00 by claunia · 0 comments
Owner

Original Pull Request: https://github.com/microsoft/terminal/pull/10971

State: closed
Merged: Yes


Summary of the Pull Request

The bug was that Narrator would still read the content of the old tab/pane although a new tab/pane was introduced. This is caused by the automation peer not being created when XAML requests it. Normally, we would prevent the automation peer from being created if the terminal was not fully initialized.

This change allows the automation peer to be created regardless of the terminal being fully initialized by...

  • TermControl: _InitializeTerminal updates the padding (dependent on the SwapChainPanel) upon full initialization
  • ControlCore: initialize the _renderer in the ctor so that we can attach the UIA Engine before ControlCore::Initialize() is called (dependent on SwapChainPanel loading)

As a bonus, this also fixes a locking issue where logging would attempt to get the text range's text and lock twice. The locking fix is very similar to #10937.

PR Checklist

Closes MSFT 33353327

Validation Steps Performed

  • New pane from key binding is announced by Narrator
  • New tab from key binding is announced by Narrator
**Original Pull Request:** https://github.com/microsoft/terminal/pull/10971 **State:** closed **Merged:** Yes --- ## Summary of the Pull Request The bug was that Narrator would still read the content of the old tab/pane although a new tab/pane was introduced. This is caused by the automation peer not being created when XAML requests it. Normally, we would prevent the automation peer from being created if the terminal was not fully initialized. This change allows the automation peer to be created regardless of the terminal being fully initialized by... - `TermControl`: `_InitializeTerminal` updates the padding (dependent on the `SwapChainPanel`) upon full initialization - `ControlCore`: initialize the `_renderer` in the ctor so that we can attach the UIA Engine before `ControlCore::Initialize()` is called (dependent on `SwapChainPanel` loading) As a bonus, this also fixes a locking issue where logging would attempt to get the text range's text and lock twice. The locking fix is very similar to #10937. ## PR Checklist Closes [MSFT 33353327](https://microsoft.visualstudio.com/OS/_workitems/edit/33353327) ## Validation Steps Performed - New pane from key binding is announced by Narrator - New tab from key binding is announced by Narrator
claunia added the pull-request label 2026-01-31 09:27:50 +00:00
Sign in to join this conversation.
No Label pull-request
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/terminal#28330