From 0e7b8f6f4589195ae35e933c64f89f9478832fb1 Mon Sep 17 00:00:00 2001 From: Steven Kirk Date: Tue, 25 Jul 2023 23:17:48 +0200 Subject: [PATCH] Allow embedded root automation peers. --- .../Avalonia.Win32/Automation/RootAutomationNode.cs | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/Windows/Avalonia.Win32/Automation/RootAutomationNode.cs b/src/Windows/Avalonia.Win32/Automation/RootAutomationNode.cs index 739f0ac251..0a73c8bc7b 100644 --- a/src/Windows/Avalonia.Win32/Automation/RootAutomationNode.cs +++ b/src/Windows/Avalonia.Win32/Automation/RootAutomationNode.cs @@ -33,7 +33,7 @@ namespace Avalonia.Win32.Automation return null; var p = WindowImpl.PointToClient(new PixelPoint((int)x, (int)y)); - var found = InvokeSync(() => Peer.GetPeerFromPoint(p)); + var found = InvokeSync(() => GetPeerFromPoint(p)); var result = GetOrCreate(found) as IRawElementProviderFragment; return result; } @@ -101,5 +101,15 @@ namespace Avalonia.Win32.Automation return result; } } + + private AutomationPeer? GetPeerFromPoint(Point p) + { + var hit = Peer.GetPeerFromPoint(p); + + while (hit != Peer && hit?.GetProvider() is { } embeddedRoot) + hit = embeddedRoot.GetPeerFromPoint(p); + + return hit; + } } }