From bc8a5af921ff9efbc46da652b3b928532016a30e Mon Sep 17 00:00:00 2001 From: ahopper Date: Wed, 4 Sep 2019 14:40:30 +0100 Subject: [PATCH] fix nested popups closing --- src/Avalonia.Controls/Primitives/Popup.cs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/Avalonia.Controls/Primitives/Popup.cs b/src/Avalonia.Controls/Primitives/Popup.cs index 5ddbed5944..b3f86e8a76 100644 --- a/src/Avalonia.Controls/Primitives/Popup.cs +++ b/src/Avalonia.Controls/Primitives/Popup.cs @@ -450,7 +450,14 @@ namespace Avalonia.Controls.Primitives private bool IsChildOrThis(IVisual child) { - return _popupHost != null && ((IVisual)_popupHost).FindCommonVisualAncestor(child) == _popupHost; + IVisual root = child.GetVisualRoot(); + while (root is IHostedVisualTreeRoot hostedRoot ) + { + if (root == this._popupHost) + return true; + root = hostedRoot.Host?.GetVisualRoot(); + } + return false; } public bool IsInsidePopup(IVisual visual)