Browse Source

Transform screen position for the point args from another visual root

pull/8918/head
Max Katz 3 years ago
parent
commit
2dad559138
  1. 12
      src/Avalonia.Base/Input/PointerEventArgs.cs

12
src/Avalonia.Base/Input/PointerEventArgs.cs

@ -65,7 +65,17 @@ namespace Avalonia.Input
return default;
if (relativeTo == null)
return pt;
return pt * _rootVisual.TransformToVisual(relativeTo) ?? default;
var pointRootVisual = _rootVisual;
if (relativeTo.VisualRoot is { } root
&& _rootVisual != root)
{
var screenPoint = _rootVisual.PointToScreen(pt);
pt = relativeTo.VisualRoot.PointToClient(screenPoint);
pointRootVisual = root;
}
return pt * pointRootVisual.TransformToVisual(relativeTo) ?? default;
}
/// <summary>

Loading…
Cancel
Save