From 50987b384a122d6ecc322677c695689f27fcb3e2 Mon Sep 17 00:00:00 2001 From: Emmanuel Hansen Date: Mon, 28 Aug 2023 14:34:28 +0000 Subject: [PATCH] adjust popup working area with toplevel's safe area padding --- src/Avalonia.Controls/Primitives/OverlayPopupHost.cs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/Avalonia.Controls/Primitives/OverlayPopupHost.cs b/src/Avalonia.Controls/Primitives/OverlayPopupHost.cs index 5dd0f23e8e..43785212de 100644 --- a/src/Avalonia.Controls/Primitives/OverlayPopupHost.cs +++ b/src/Avalonia.Controls/Primitives/OverlayPopupHost.cs @@ -78,7 +78,7 @@ namespace Avalonia.Controls.Primitives Rect? rect = null) { _positionerParameters.ConfigurePosition((TopLevel)_overlayLayer.GetVisualRoot()!, target, placement, offset, anchor, - gravity, constraintAdjustment, rect, FlowDirection); + gravity, constraintAdjustment | PopupPositionerConstraintAdjustment.All, rect, FlowDirection); UpdatePosition(); } @@ -110,6 +110,13 @@ namespace Avalonia.Controls.Primitives get { var rc = new Rect(default, _overlayLayer.AvailableSize); + var topLevel = TopLevel.GetTopLevel(this); + if(topLevel != null) + { + var padding = topLevel.InsetsManager?.SafeAreaPadding ?? default; + rc = rc.Deflate(padding); + } + return new[] {new ManagedPopupPositionerScreenInfo(rc, rc)}; } }