From 908b98173000cc009e7d564a60777f4d33dc08b3 Mon Sep 17 00:00:00 2001 From: cornerloan Date: Sat, 26 Apr 2025 21:36:51 -0700 Subject: [PATCH 1/3] fixed menu losing focus with multiple inputs --- Scenes/UI/Remapping/ControlSettings.cs | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/Scenes/UI/Remapping/ControlSettings.cs b/Scenes/UI/Remapping/ControlSettings.cs index e3b70dba..3fc8ccc0 100644 --- a/Scenes/UI/Remapping/ControlSettings.cs +++ b/Scenes/UI/Remapping/ControlSettings.cs @@ -151,6 +151,7 @@ public override void _Process(double delta) { if (_remapPopup.Visible) _remapLabel.Text = ((int)_remapTimer.TimeLeft + 1).ToString(); + NoNullFocus(); } public void ResumeFocus() @@ -177,6 +178,18 @@ public void ReturnToPrev() QueueFree(); } + private void NoNullFocus() + { + var focusedNode = GetViewport().GuiGetFocusOwner(); + if (focusedNode != null) + return; + var defaultButton = + _remapTabs.CurrentTab == 0 + ? GetNode(KeyboardTabPath + _inputNodeNames[0] + ButtonNameSuffix) + : GetNode(JoyTabPath + _inputNodeNames[0] + ButtonNameSuffix); + defaultButton.GrabFocus(); + } + #endregion /// From a1adbd560efc4e84dc76537e03a8eb54ffff5a51 Mon Sep 17 00:00:00 2001 From: cornerloan Date: Sat, 26 Apr 2025 21:51:30 -0700 Subject: [PATCH 2/3] fixed same issue for inventory screen --- Scenes/UI/Scripts/Inventory.cs | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/Scenes/UI/Scripts/Inventory.cs b/Scenes/UI/Scripts/Inventory.cs index d41380ee..d57fedf3 100644 --- a/Scenes/UI/Scripts/Inventory.cs +++ b/Scenes/UI/Scripts/Inventory.cs @@ -43,6 +43,11 @@ private void AddDisplayButtons(IDisplayable[] displayables, Node parentNode) } } + public override void _Process(double delta) + { + NoNullFocus(); + } + public override void _Input(InputEvent @event) { if (!GetWindow().HasFocus()) @@ -101,6 +106,20 @@ public void ReturnToPrev() QueueFree(); } + private void NoNullFocus() + { + var focusedNode = GetViewport().GuiGetFocusOwner(); + if (focusedNode != null) + return; + + Node parentNode = _tabs.CurrentTab == 0 ? _notes : _relics; + if (parentNode.GetChildCount() <= 0) + return; + + var defaultButton = parentNode.GetChild(0) as Control; + defaultButton?.GrabFocus(); + } + private void DoDescription(DisplayButton dispButton) { string itemName = dispButton.DisplayName.ToUpper(); From 0367ac55a47ef913c056146548a05130d95718e6 Mon Sep 17 00:00:00 2001 From: LifeHckr Date: Sat, 26 Apr 2025 21:57:25 -0700 Subject: [PATCH 3/3] Simplify focus fix logic Co-Authored-By: Connor Lowe <74088480+cornerloan@users.noreply.github.com> --- Scenes/UI/Remapping/ControlSettings.cs | 6 +----- Scenes/UI/Scripts/Inventory.cs | 9 ++------- 2 files changed, 3 insertions(+), 12 deletions(-) diff --git a/Scenes/UI/Remapping/ControlSettings.cs b/Scenes/UI/Remapping/ControlSettings.cs index 3fc8ccc0..279ebba4 100644 --- a/Scenes/UI/Remapping/ControlSettings.cs +++ b/Scenes/UI/Remapping/ControlSettings.cs @@ -183,11 +183,7 @@ private void NoNullFocus() var focusedNode = GetViewport().GuiGetFocusOwner(); if (focusedNode != null) return; - var defaultButton = - _remapTabs.CurrentTab == 0 - ? GetNode(KeyboardTabPath + _inputNodeNames[0] + ButtonNameSuffix) - : GetNode(JoyTabPath + _inputNodeNames[0] + ButtonNameSuffix); - defaultButton.GrabFocus(); + _remapTabs.GetTabBar().GrabFocus(); } #endregion diff --git a/Scenes/UI/Scripts/Inventory.cs b/Scenes/UI/Scripts/Inventory.cs index d57fedf3..2c2bb84c 100644 --- a/Scenes/UI/Scripts/Inventory.cs +++ b/Scenes/UI/Scripts/Inventory.cs @@ -111,13 +111,8 @@ private void NoNullFocus() var focusedNode = GetViewport().GuiGetFocusOwner(); if (focusedNode != null) return; - - Node parentNode = _tabs.CurrentTab == 0 ? _notes : _relics; - if (parentNode.GetChildCount() <= 0) - return; - - var defaultButton = parentNode.GetChild(0) as Control; - defaultButton?.GrabFocus(); + _tabs.GetTabBar().GrabFocus(); + ClearDescription(-1); } private void DoDescription(DisplayButton dispButton)