From 12cd666dc7bd2484ea64140dd18eeefea43a8b54 Mon Sep 17 00:00:00 2001 From: Steven Kirk Date: Sat, 2 Mar 2019 17:57:05 +0100 Subject: [PATCH] Respect RenderTransform in GetPosition. Fixes #1558. --- src/Avalonia.Input/MouseDevice.cs | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/src/Avalonia.Input/MouseDevice.cs b/src/Avalonia.Input/MouseDevice.cs index 7945ee8ee4..d3e62ece6f 100644 --- a/src/Avalonia.Input/MouseDevice.cs +++ b/src/Avalonia.Input/MouseDevice.cs @@ -84,18 +84,14 @@ namespace Avalonia.Input { Contract.Requires(relativeTo != null); - Point p = default(Point); - IVisual v = relativeTo; - IVisual root = null; - - while (v != null) + if (relativeTo.VisualRoot == null) { - p += v.Bounds.Position; - root = v; - v = v.VisualParent; + throw new InvalidOperationException("Control is not attached to visual tree."); } - return root.PointToClient(Position) - p; + var rootPoint = relativeTo.VisualRoot.PointToClient(Position); + var transform = relativeTo.VisualRoot.TransformToVisual(relativeTo); + return rootPoint * transform.Value; } public void ProcessRawEvent(RawInputEventArgs e)