02ac246807
## Summary of the Pull Request As a part of the Interactivity split, `TermControlAutomationPeer` had to be split into `TermControlAutomationPeer` (TCAP) and `InteractivityAutomationPeer` (IAP). Just about all of the functions in `InterativityAutomationPeer` operate by calling the non-XAML UIA Provider then wrapping the resulting `UIATextRange` into a XAML format (a `XamlUiaTextRange` [XUTR]). As a part of that XUTR constructor, we need a reference to the parent provider. We generally get that via `ProviderFromPeer()`, but IAP's `ProviderFromPeer()` returned null (presumably because IAP isn't in the UI tree, whereas TCAP is directly registered as the automation peer for the `TermControl`). It looks like some screen readers didn't care (like NVDA, though there may be a chance we just didn't encounter an issue just yet), but Narrator definitely did. The fix was to provide XUTR constructors the `ProviderFromPeer` from TCAP, _not_ IAP. To accomplish this, IAP now holds a weak reference to TCAP, and provides the `ProviderFromPeer` when needed. We can't cache this result because there is no guarantee that it won't change. Some miscellaneous changes include: - `TermControl::OnCreateAutomationPeer` now returns the existing auto peer instead of always creating a new one - `TCAP::WrapArrayOfTextRangeProviders` was removed as it was unused (normally, this would be directly affected by the main `ProviderFromPeer` change here) - `XUTR::GetEnclosingElement` is now hooked up to trace logging for debugging purposes ## References Introduced in #10051 Closes #11488 ## Validation Steps Performed ✅ Narrator scan mode now works (verified with character, word, and line navigation) ✅ NVDA movement still works (verified with word and line navigation) |
||
---|---|---|
.. | ||
api-ms-win-core-synch-l1-2-0 | ||
buffer | ||
cascadia | ||
dep | ||
host | ||
inc | ||
interactivity | ||
internal | ||
propsheet | ||
propslib | ||
renderer | ||
server | ||
staging | ||
terminal | ||
testlist | ||
til | ||
tools | ||
tsf | ||
types | ||
winconpty | ||
common.build.post.props | ||
common.build.pre.props | ||
common.build.tests.props | ||
common.pgo.compile.props | ||
common.pgo.runtime.props | ||
ConsolePerf.regions.xml | ||
ConsolePerf.wprp | ||
cppwinrt.build.post.props | ||
cppwinrt.build.pre.props | ||
dirs | ||
features.xml | ||
project.inc | ||
project.unittest.inc | ||
StaticAnalysis.ruleset | ||
Terminal.wprp | ||
unit.tests.x64.runsettings | ||
unit.tests.x86.runsettings | ||
wap-common.build.post.props | ||
wap-common.build.pre.props |