From f37c4a9059cc32d8c29856972a5f8b26d58f3957 Mon Sep 17 00:00:00 2001 From: Steven Kirk Date: Fri, 15 Jan 2016 17:42:25 +0100 Subject: [PATCH] Only close Popup when click is outside PopupRoot. --- src/Perspex.Controls/Primitives/Popup.cs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/Perspex.Controls/Primitives/Popup.cs b/src/Perspex.Controls/Primitives/Popup.cs index 897e3ef90a..74459ed4c4 100644 --- a/src/Perspex.Controls/Primitives/Popup.cs +++ b/src/Perspex.Controls/Primitives/Popup.cs @@ -300,7 +300,15 @@ namespace Perspex.Controls.Primitives /// The event args. private void MaybeClose(object sender, EventArgs e) { - if (!StaysOpen) + var routed = e as RoutedEventArgs; + var outside = true; + + if (routed != null) + { + outside = ((IVisual)routed.Source).GetVisualRoot() != this.PopupRoot; + } + + if (outside && !StaysOpen) { Close(); }