From 0105698c33c92a672858c827e1861232386225c9 Mon Sep 17 00:00:00 2001 From: Gabriel Kaszewski Date: Thu, 19 Mar 2026 03:29:36 +0100 Subject: [PATCH] fix: guard GrabFirstFocus on pointerless, unsub VisibilityChanged in _ExitTree --- scripts/UI/AudioSettings.cs | 1 + scripts/UI/MainMenu.cs | 3 ++- scripts/UI/PauseMenu.cs | 1 + 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/scripts/UI/AudioSettings.cs b/scripts/UI/AudioSettings.cs index c1f35eb..6d777f9 100644 --- a/scripts/UI/AudioSettings.cs +++ b/scripts/UI/AudioSettings.cs @@ -36,6 +36,7 @@ public partial class AudioSettings : Control { if (InputDeviceManager.Instance != null) InputDeviceManager.Instance.DeviceChanged -= OnDeviceChanged; + AudioSettingsControl.VisibilityChanged -= OnVisibilityChanged; SaveSettings(); } diff --git a/scripts/UI/MainMenu.cs b/scripts/UI/MainMenu.cs index 5f3c6d1..1c40763 100644 --- a/scripts/UI/MainMenu.cs +++ b/scripts/UI/MainMenu.cs @@ -40,7 +40,8 @@ public partial class MainMenu : Control InputDeviceManager.Instance.DeviceChanged += OnDeviceChanged; VisibilityChanged += OnVisibilityChanged; - GrabFirstFocus(); + if (InputDeviceManager.Instance?.IsPointerless == true) + GrabFirstFocus(); } public override void _ExitTree() diff --git a/scripts/UI/PauseMenu.cs b/scripts/UI/PauseMenu.cs index 061f78e..9457e06 100644 --- a/scripts/UI/PauseMenu.cs +++ b/scripts/UI/PauseMenu.cs @@ -39,6 +39,7 @@ public partial class PauseMenu : Control { if (InputDeviceManager.Instance != null) InputDeviceManager.Instance.DeviceChanged -= OnDeviceChanged; + PauseMenuControl.VisibilityChanged -= OnVisibilityChanged; } private void OnVisibilityChanged()