From 85fcbdf24e34449b19330b57cc3ad3ba32247402 Mon Sep 17 00:00:00 2001 From: BDisp Date: Tue, 24 Sep 2024 16:11:13 +0100 Subject: [PATCH] Fixes #3754. UICatalog throws System.NullReferenceException on MenuBar in Linux. (#3755) --- Terminal.Gui/Views/Menu/Menu.cs | 2 +- UnitTests/Views/MenuBarTests.cs | 24 ++++++++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/Terminal.Gui/Views/Menu/Menu.cs b/Terminal.Gui/Views/Menu/Menu.cs index 9fcf3fd4c..e6ea44cb6 100644 --- a/Terminal.Gui/Views/Menu/Menu.cs +++ b/Terminal.Gui/Views/Menu/Menu.cs @@ -101,7 +101,7 @@ internal sealed class Menu : View for (var i = 0; i < _barItems.Children?.Length; i++) { - if (_barItems.Children [i]!.IsEnabled ()) + if (_barItems.Children [i]?.IsEnabled () == true) { _currentChild = i; diff --git a/UnitTests/Views/MenuBarTests.cs b/UnitTests/Views/MenuBarTests.cs index a16e4f7de..0182ec2af 100644 --- a/UnitTests/Views/MenuBarTests.cs +++ b/UnitTests/Views/MenuBarTests.cs @@ -148,6 +148,30 @@ public class MenuBarTests (ITestOutputHelper output) top.Dispose (); } + [Fact] + [AutoInitShutdown] + public void CanExecute_False_Does_Not_Throws () + { + var menu = new MenuBar + { + Menus = + [ + new ("File", new MenuItem [] + { + new ("New", "", null, () => false), + null, + new ("Quit", "", null) + }) + ] + }; + var top = new Toplevel (); + top.Add (menu); + Application.Begin (top); + + Assert.True (menu.NewKeyDownEvent (menu.Key)); + Assert.True (menu.IsMenuOpen); + } + [Fact] [AutoInitShutdown] public void CanExecute_HotKey ()