Browse Source

HitTestEnumerator: FilterAndClip don't transform point for ICustomHitTest

pull/5923/head
mat1jaczyyy 5 years ago
parent
commit
ad14ece468
  1. 2
      src/Avalonia.Visuals/Rendering/ImmediateRenderer.cs
  2. 6
      src/Avalonia.Visuals/Rendering/SceneGraph/Scene.cs

2
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)
{

6
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;

Loading…
Cancel
Save