From 51c8542030b33f4374d2cb281a4455747b12a564 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Fri, 2 Sep 2016 20:52:12 +0100 Subject: [PATCH] prevented second subscription of ListenForNonClientClick --- src/Avalonia.Controls/Primitives/Popup.cs | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/src/Avalonia.Controls/Primitives/Popup.cs b/src/Avalonia.Controls/Primitives/Popup.cs index ae62922cb0..c548d107a1 100644 --- a/src/Avalonia.Controls/Primitives/Popup.cs +++ b/src/Avalonia.Controls/Primitives/Popup.cs @@ -182,6 +182,8 @@ namespace Avalonia.Controls.Primitives /// IVisual IVisualTreeHost.Root => _popupRoot; + bool _ignoreIsOpenChanged = false; + /// /// Opens the popup. /// @@ -220,7 +222,11 @@ namespace Avalonia.Controls.Primitives PopupRootCreated?.Invoke(this, EventArgs.Empty); _popupRoot.Show(); + + _ignoreIsOpenChanged = true; IsOpen = true; + _ignoreIsOpenChanged = false; + Opened?.Invoke(this, EventArgs.Empty); } @@ -283,13 +289,16 @@ namespace Avalonia.Controls.Primitives /// The event args. private void IsOpenChanged(AvaloniaPropertyChangedEventArgs e) { - if ((bool)e.NewValue) + if (!_ignoreIsOpenChanged) { - Open(); - } - else - { - Close(); + if ((bool)e.NewValue) + { + Open(); + } + else + { + Close(); + } } }