diff --git a/src/AtomUI.Controls/Menu/ContextMenu.cs b/src/AtomUI.Controls/Menu/ContextMenu.cs index 2a48171ef..914d6f413 100644 --- a/src/AtomUI.Controls/Menu/ContextMenu.cs +++ b/src/AtomUI.Controls/Menu/ContextMenu.cs @@ -69,6 +69,7 @@ public class ContextMenu : AvaloniaContextMenu, _popup.SetIgnoreIsOpenChanged(true); _popup.IsMotionAwareOpen = true; }; + } private bool MenuPopupClosePredicate(IPopupHostProvider hostProvider, RawPointerEventArgs args) @@ -81,6 +82,11 @@ public class ContextMenu : AvaloniaContextMenu, popupRoots.UnionWith(MenuItem.CollectPopupRoots(childMenuItem)); } } + + if (_popup?.Host is PopupRoot popupRoot) + { + popupRoots.Add(popupRoot); + } return !popupRoots.Contains(args.Root); } diff --git a/src/AtomUI.Controls/Menu/MenuItem.cs b/src/AtomUI.Controls/Menu/MenuItem.cs index 9a0b7d1c8..caefd3ce7 100644 --- a/src/AtomUI.Controls/Menu/MenuItem.cs +++ b/src/AtomUI.Controls/Menu/MenuItem.cs @@ -146,6 +146,7 @@ public class MenuItem : AvaloniaMenuItem private bool MenuPopupClosePredicate(IPopupHostProvider hostProvider, RawPointerEventArgs args) { var popupRoots = CollectPopupRoots(this); + return !popupRoots.Contains(args.Root); }