From 3b3b5145ee941c9dad0e9c318b081b74e0ea8287 Mon Sep 17 00:00:00 2001 From: Yoh Deadfall Date: Fri, 26 May 2023 17:34:10 +0300 Subject: [PATCH 1/2] Ignore non hittable elements on hit test --- src/Avalonia.Controls/Primitives/LightDismissOverlayLayer.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Avalonia.Controls/Primitives/LightDismissOverlayLayer.cs b/src/Avalonia.Controls/Primitives/LightDismissOverlayLayer.cs index 8525f025a3..5c350688a4 100644 --- a/src/Avalonia.Controls/Primitives/LightDismissOverlayLayer.cs +++ b/src/Avalonia.Controls/Primitives/LightDismissOverlayLayer.cs @@ -50,7 +50,7 @@ namespace Avalonia.Controls.Primitives { if (InputPassThroughElement is Visual v) { - var hit = ((Visual?)VisualRoot)?.GetVisualAt(point, x => x != this); + var hit = ((IInputElement?)VisualRoot)?.InputHitTest(point, x => x != this) as Visual; if (hit is object) { From bc664b9b294e399994af17513106df40f250a4cf Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Mon, 29 May 2023 17:15:10 +0100 Subject: [PATCH 2/2] use pattern match to make more readable and eliminate an if. --- src/Avalonia.Controls/Primitives/LightDismissOverlayLayer.cs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/Avalonia.Controls/Primitives/LightDismissOverlayLayer.cs b/src/Avalonia.Controls/Primitives/LightDismissOverlayLayer.cs index 5c350688a4..94ee99b019 100644 --- a/src/Avalonia.Controls/Primitives/LightDismissOverlayLayer.cs +++ b/src/Avalonia.Controls/Primitives/LightDismissOverlayLayer.cs @@ -46,13 +46,12 @@ namespace Avalonia.Controls.Primitives return manager?.LightDismissOverlayLayer; } + /// public bool HitTest(Point point) { if (InputPassThroughElement is Visual v) { - var hit = ((IInputElement?)VisualRoot)?.InputHitTest(point, x => x != this) as Visual; - - if (hit is object) + if (VisualRoot is IInputElement ie && ie.InputHitTest(point, x => x != this) is Visual hit) { return !v.IsVisualAncestorOf(hit); }