From bc36330bc01615bcfc99736ee6d5a2ed1affaef3 Mon Sep 17 00:00:00 2001 From: Steven Kirk Date: Sun, 5 Apr 2020 17:19:37 +0200 Subject: [PATCH 1/2] Added failing ContextMenu test. Due to NRE introduced in #3745. --- .../ContextMenuTests.cs | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/tests/Avalonia.Controls.UnitTests/ContextMenuTests.cs b/tests/Avalonia.Controls.UnitTests/ContextMenuTests.cs index f44f89e91f..5a47a86e51 100644 --- a/tests/Avalonia.Controls.UnitTests/ContextMenuTests.cs +++ b/tests/Avalonia.Controls.UnitTests/ContextMenuTests.cs @@ -1,9 +1,5 @@ using System; -using System.Windows.Input; -using Avalonia.Controls.Primitives; -using Avalonia.Data; using Avalonia.Input; -using Avalonia.Markup.Data; using Avalonia.Platform; using Avalonia.UnitTests; using Moq; @@ -159,6 +155,19 @@ namespace Avalonia.Controls.UnitTests } } + [Fact] + public void Can_Set_Clear_ContextMenu_Property() + { + using (Application()) + { + var target = new ContextMenu(); + var control = new Panel(); + + control.ContextMenu = target; + control.ContextMenu = null; + } + } + [Fact(Skip = "The only reason this test was 'passing' before was that the author forgot to call Window.ApplyTemplate()")] public void Cancelling_Closing_Leaves_ContextMenuOpen() { From 5ad8c41f37a593f0d3861e5308fb45201f96fa4f Mon Sep 17 00:00:00 2001 From: Steven Kirk Date: Sun, 5 Apr 2020 17:19:58 +0200 Subject: [PATCH 2/2] Fix NRE in ContextMenu. --- src/Avalonia.Controls/ContextMenu.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Avalonia.Controls/ContextMenu.cs b/src/Avalonia.Controls/ContextMenu.cs index bb9b853c28..1735599988 100644 --- a/src/Avalonia.Controls/ContextMenu.cs +++ b/src/Avalonia.Controls/ContextMenu.cs @@ -75,7 +75,7 @@ namespace Avalonia.Controls { control.PointerReleased -= ControlPointerReleased; oldMenu._attachedControl = null; - ((ISetLogicalParent)oldMenu._popup).SetParent(null); + ((ISetLogicalParent)oldMenu._popup)?.SetParent(null); } if (e.NewValue is ContextMenu newMenu)