From ad14ece46860b6f59a7fe883e4dea42186135676 Mon Sep 17 00:00:00 2001 From: mat1jaczyyy Date: Fri, 14 May 2021 16:49:49 +0200 Subject: [PATCH] HitTestEnumerator: FilterAndClip don't transform point for ICustomHitTest --- src/Avalonia.Visuals/Rendering/ImmediateRenderer.cs | 2 +- src/Avalonia.Visuals/Rendering/SceneGraph/Scene.cs | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Avalonia.Visuals/Rendering/ImmediateRenderer.cs b/src/Avalonia.Visuals/Rendering/ImmediateRenderer.cs index 9ea1b84311..85feb06c44 100644 --- a/src/Avalonia.Visuals/Rendering/ImmediateRenderer.cs +++ b/src/Avalonia.Visuals/Rendering/ImmediateRenderer.cs @@ -225,7 +225,7 @@ namespace Avalonia.Rendering if (filter?.Invoke(visual) != false) { - bool containsPoint = false; + bool containsPoint; if (visual is ICustomSimpleHitTest custom) { diff --git a/src/Avalonia.Visuals/Rendering/SceneGraph/Scene.cs b/src/Avalonia.Visuals/Rendering/SceneGraph/Scene.cs index 608ad7ab75..36aa08c2f9 100644 --- a/src/Avalonia.Visuals/Rendering/SceneGraph/Scene.cs +++ b/src/Avalonia.Visuals/Rendering/SceneGraph/Scene.cs @@ -256,7 +256,8 @@ namespace Avalonia.Rendering.SceneGraph if (childCount == 0 || wasVisited) { - if ((wasVisited || FilterAndClip(node, ref clip)) && (node.Visual is ICustomSimpleHitTest custom ? custom.HitTest(_point) : node.HitTest(_point))) + if ((wasVisited || FilterAndClip(node, ref clip)) && + (node.Visual is ICustomSimpleHitTest custom ? custom.HitTest(_point) : node.HitTest(_point))) { _current = node.Visual; @@ -311,8 +312,7 @@ namespace Avalonia.Rendering.SceneGraph if (!clipped && node.Visual is ICustomHitTest custom) { - var controlPoint = _sceneRoot.Visual.TranslatePoint(_point, node.Visual); - clipped = !custom.HitTest(controlPoint.Value); + clipped = !custom.HitTest(_point); } return !clipped;