From 42b9a4d4afc10d8eb994fab167819f7d35f50bcb Mon Sep 17 00:00:00 2001 From: BDisp Date: Wed, 18 Sep 2024 22:34:09 +0100 Subject: [PATCH] Fixes #3740. Disabled MenuItem triggers exception. --- Terminal.Gui/Views/Menu.cs | 2 +- UnitTests/Menus/MenuTests.cs | 12 ++++-------- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/Terminal.Gui/Views/Menu.cs b/Terminal.Gui/Views/Menu.cs index 444f695a6..464fa3b4d 100644 --- a/Terminal.Gui/Views/Menu.cs +++ b/Terminal.Gui/Views/Menu.cs @@ -1238,7 +1238,7 @@ namespace Terminal.Gui { mi = openCurrentMenu.barItems.Children [openCurrentMenu.current]; } else if (openCurrentMenu.barItems.IsTopLevel) { mi = openCurrentMenu.barItems; - } else { + } else if (openCurrentMenu?.current > -1) { mi = openMenu.barItems.Children [openMenu.current]; } MenuOpened?.Invoke (mi); diff --git a/UnitTests/Menus/MenuTests.cs b/UnitTests/Menus/MenuTests.cs index 35b0a18ae..d62b7b709 100644 --- a/UnitTests/Menus/MenuTests.cs +++ b/UnitTests/Menus/MenuTests.cs @@ -219,8 +219,7 @@ Edit View = mCurrent })); Assert.True (menu.IsMenuOpen); - Assert.Equal ("_File", miCurrent.Parent.Title); - Assert.Equal ("_New", miCurrent.Title); + Assert.Null (miCurrent); Assert.True (mCurrent.MouseEvent (new MouseEvent () { X = 1, @@ -229,8 +228,7 @@ Edit View = mCurrent })); Assert.True (menu.IsMenuOpen); - Assert.Equal ("_File", miCurrent.Parent.Title); - Assert.Equal ("_New", miCurrent.Title); + Assert.Null (miCurrent); Assert.True (mCurrent.MouseEvent (new MouseEvent () { X = 1, @@ -239,8 +237,7 @@ Edit View = mCurrent })); Assert.True (menu.IsMenuOpen); - Assert.Equal ("_File", miCurrent.Parent.Title); - Assert.Equal ("_Save", miCurrent.Title); + Assert.Null (miCurrent); // close the menu Assert.True (menu.MouseEvent (new MouseEvent () { @@ -265,8 +262,7 @@ Edit Assert.True (mCurrent.ProcessKey (new KeyEvent (Key.CursorUp, new KeyModifiers ()))); Assert.True (menu.IsMenuOpen); - Assert.Equal ("_File", miCurrent.Parent.Title); - Assert.Equal ("_New", miCurrent.Title); + Assert.Null (miCurrent); // close the menu Assert.True (menu.ProcessHotKey (new KeyEvent (Key.F9, new KeyModifiers ())));