Преглед изворни кода

Fixes #3740. Disabled MenuItem triggers exception.

BDisp пре 10 месеци
родитељ
комит
1860687839
2 измењених фајлова са 5 додато и 9 уклоњено
  1. 1 1
      Terminal.Gui/Views/Menu.cs
  2. 4 8
      UnitTests/Menus/MenuTests.cs

+ 1 - 1
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);

+ 4 - 8
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 ())));