diff --git a/ui/gamemenu/GameMenu.gd b/ui/gamemenu/GameMenu.gd index 357629d..62be818 100644 --- a/ui/gamemenu/GameMenu.gd +++ b/ui/gamemenu/GameMenu.gd @@ -41,7 +41,7 @@ func _unhandled_input(event:InputEvent) -> void: if event.is_action_pressed("menu"): if visible: close() - elif !UI.dialogueActive: + elif !UI.dialogueActive and SCENE.currentScene == SceneSingleton.SceneType.OVERWORLD: open() get_viewport().set_input_as_handled() return diff --git a/ui/mainmenu/MainMenu.gd b/ui/mainmenu/MainMenu.gd index 612dc62..f1c2dd8 100644 --- a/ui/mainmenu/MainMenu.gd +++ b/ui/mainmenu/MainMenu.gd @@ -12,7 +12,10 @@ func _ready() -> void: btnQuit.pressed.connect(_onQuitPressed) settingsMenu.opened.connect(_onSettingsOpened) settingsMenu.closed.connect(_onSettingsClosed) - btnNewGame.grab_focus() + +func _notification(what:int) -> void: + if what == NOTIFICATION_ENTER_TREE: + btnNewGame.call_deferred("grab_focus") func _onSettingsOpened() -> void: # Move focus into the settings panel so the controller can navigate it. diff --git a/ui/settings/SettingsMenu.gd b/ui/settings/SettingsMenu.gd index aaa35ec..f3c9770 100644 --- a/ui/settings/SettingsMenu.gd +++ b/ui/settings/SettingsMenu.gd @@ -52,6 +52,8 @@ func onTabChanged(tabIndex:int) -> void: _focusFirstIn(tabControls[tabIndex]) func _focusFirstIn(container:Control) -> void: + if !is_visible_in_tree(): + return for child in container.get_children(): if child is Control and child.focus_mode != Control.FOCUS_NONE: child.grab_focus()