From a29404c3f7e435a81f483996545233981b1889b0 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Wed, 11 Dec 2019 16:17:51 -0300 Subject: [PATCH 1/2] [Popup] opens under mouse as 0.8 release did. Prevents rapid opening and closing. --- .../Primitives/PopupPositioning/IPopupPositioner.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Avalonia.Controls/Primitives/PopupPositioning/IPopupPositioner.cs b/src/Avalonia.Controls/Primitives/PopupPositioning/IPopupPositioner.cs index 3010a3d8a8..90b86739e9 100644 --- a/src/Avalonia.Controls/Primitives/PopupPositioning/IPopupPositioner.cs +++ b/src/Avalonia.Controls/Primitives/PopupPositioning/IPopupPositioner.cs @@ -305,7 +305,7 @@ namespace Avalonia.Controls.Primitives.PopupPositioning positionerParameters.ConstraintAdjustment = PopupPositionerConstraintAdjustment.All; if (placement == PlacementMode.Pointer) { - positionerParameters.AnchorRectangle = new Rect(pointer, new Size(1, 1)); + positionerParameters.AnchorRectangle = new Rect(pointer, new Size(0, 0)); positionerParameters.Anchor = PopupPositioningEdge.BottomRight; positionerParameters.Gravity = PopupPositioningEdge.BottomRight; } From 69b7bc20416a01b88b446e845b5d25514eaeb809 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Wed, 11 Dec 2019 16:26:43 -0300 Subject: [PATCH 2/2] [Popup] Use anchor and gravity to get the correct positioning under the mouse. --- .../Primitives/PopupPositioning/IPopupPositioner.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Avalonia.Controls/Primitives/PopupPositioning/IPopupPositioner.cs b/src/Avalonia.Controls/Primitives/PopupPositioning/IPopupPositioner.cs index 90b86739e9..f0358ec04f 100644 --- a/src/Avalonia.Controls/Primitives/PopupPositioning/IPopupPositioner.cs +++ b/src/Avalonia.Controls/Primitives/PopupPositioning/IPopupPositioner.cs @@ -305,8 +305,8 @@ namespace Avalonia.Controls.Primitives.PopupPositioning positionerParameters.ConstraintAdjustment = PopupPositionerConstraintAdjustment.All; if (placement == PlacementMode.Pointer) { - positionerParameters.AnchorRectangle = new Rect(pointer, new Size(0, 0)); - positionerParameters.Anchor = PopupPositioningEdge.BottomRight; + positionerParameters.AnchorRectangle = new Rect(pointer, new Size(1, 1)); + positionerParameters.Anchor = PopupPositioningEdge.TopLeft; positionerParameters.Gravity = PopupPositioningEdge.BottomRight; } else