From 330a0e8d2fe406675ce4f1b4ee9f47318af177d3 Mon Sep 17 00:00:00 2001 From: BDisp Date: Thu, 16 Mar 2023 21:03:30 +0000 Subject: [PATCH 1/2] Fixes#2404. Tabbing to MenuBar and open/close. --- Terminal.Gui/Views/Menu.cs | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/Terminal.Gui/Views/Menu.cs b/Terminal.Gui/Views/Menu.cs index e4019237f..fc669947b 100644 --- a/Terminal.Gui/Views/Menu.cs +++ b/Terminal.Gui/Views/Menu.cs @@ -808,7 +808,7 @@ namespace Terminal.Gui { } } - host?.openMenu.SetNeedsDisplay (); + host?.openMenu?.SetNeedsDisplay (); host.SetNeedsDisplay (); } @@ -1025,6 +1025,8 @@ namespace Terminal.Gui { WantMousePositionReports = true; IsMenuOpen = false; + Added += MenuBar_Added; + // Things this view knows how to do AddCommand (Command.Left, () => { MoveLeft (); return true; }); AddCommand (Command.Right, () => { MoveRight (); return true; }); @@ -1040,6 +1042,13 @@ namespace Terminal.Gui { AddKeyBinding (Key.Enter, Command.Accept); } + bool _initialCanFocus; + + private void MenuBar_Added (View obj) + { + _initialCanFocus = CanFocus; + } + bool openedByAltKey; bool isCleaning; @@ -1049,9 +1058,8 @@ namespace Terminal.Gui { { if ((!(view is MenuBar) && !(view is Menu) || !(view is MenuBar) && !(view is Menu) && openMenu != null) && !isCleaning && !reopen) { CleanUp (); - return true; } - return false; + return base.OnLeave (view); } /// @@ -1112,7 +1120,7 @@ namespace Terminal.Gui { openedByAltKey = false; IsMenuOpen = false; selected = -1; - CanFocus = false; + CanFocus = _initialCanFocus; if (lastFocused != null) { lastFocused.SetFocus (); } @@ -1509,6 +1517,8 @@ namespace Terminal.Gui { selected = -1; } LastFocused.SetFocus (); + } else if (openSubMenu == null || openSubMenu.Count == 0) { + CloseAllMenus (); } else { SetFocus (); PositionCursor (); From b949d7806428624244fee9098c70930c958389d7 Mon Sep 17 00:00:00 2001 From: BDisp Date: Fri, 17 Mar 2023 15:38:57 +0000 Subject: [PATCH 2/2] Detaching Added handler. --- Terminal.Gui/Views/Menu.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/Terminal.Gui/Views/Menu.cs b/Terminal.Gui/Views/Menu.cs index fc669947b..c8312cf55 100644 --- a/Terminal.Gui/Views/Menu.cs +++ b/Terminal.Gui/Views/Menu.cs @@ -1047,6 +1047,7 @@ namespace Terminal.Gui { private void MenuBar_Added (View obj) { _initialCanFocus = CanFocus; + Added -= MenuBar_Added; } bool openedByAltKey;