From 506e817efba29344739d2888a0a6b67210063ca9 Mon Sep 17 00:00:00 2001 From: viordash <36102143+viordash@users.noreply.github.com> Date: Sun, 1 Oct 2023 08:27:02 +0300 Subject: [PATCH] Incorrect reset of a captured control when moving the pointer over a MenuItem (#13046) * fixed incorrect reset of a captured control when moving the pointer over a MenuItem * format code --------- Co-authored-by: Max Katz --- .../Platform/DefaultMenuInteractionHandler.cs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/Avalonia.Controls/Platform/DefaultMenuInteractionHandler.cs b/src/Avalonia.Controls/Platform/DefaultMenuInteractionHandler.cs index 6a76855d85..8f1b9dfd22 100644 --- a/src/Avalonia.Controls/Platform/DefaultMenuInteractionHandler.cs +++ b/src/Avalonia.Controls/Platform/DefaultMenuInteractionHandler.cs @@ -9,6 +9,7 @@ using Avalonia.Platform; using Avalonia.Reactive; using Avalonia.Rendering; using Avalonia.Threading; +using Avalonia.VisualTree; namespace Avalonia.Controls.Platform { @@ -148,16 +149,15 @@ namespace Avalonia.Controls.Platform if (item == null) return; - - var serverTransform = item?.CompositionVisual?.TryGetServerGlobalTransform(); - if (serverTransform == null) + + var transformedBounds = item.GetTransformedBounds(); + if (transformedBounds == null) return; - + var point = e.GetCurrentPoint(null); - var transformedPoint = point.Position.Transform(serverTransform.Value); - if (point.Properties.IsLeftButtonPressed && - new Rect(item!.Bounds.Size).Contains(transformedPoint) == false) + if (point.Properties.IsLeftButtonPressed + && transformedBounds.Value.Contains(point.Position) == false) { e.Pointer.Capture(null); }