From 75433eb5d69c5b3f571316c0b7025064d46e19f1 Mon Sep 17 00:00:00 2001 From: Nolan Darilek Date: Fri, 27 Dec 2019 12:50:33 -0600 Subject: [PATCH] Migrate focus restoration to `_process`. --- ScreenReader.gd | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/ScreenReader.gd b/ScreenReader.gd index 53f77a3..9279475 100644 --- a/ScreenReader.gd +++ b/ScreenReader.gd @@ -3,23 +3,16 @@ extends Node var Accessible = preload("Accessible.gd") -var focus_restore_timer = Timer.new() +var focus_restore_timer func focused(node): - focus_restore_timer.stop() + focus_restore_timer = null func click_focused(node): pass -func restore_focus(): - var focus = find_focusable_control(get_tree().root) - if focus and not focus.get_focus_owner(): - print("Restoring focus.") - focus.grab_focus() - focus.grab_click_focus() - func unfocused(node): - focus_restore_timer.start(0.2) + focus_restore_timer = get_tree().create_timer(0.2) func augment_node(node): if node is Control: @@ -71,11 +64,16 @@ func set_initial_scene_focus(scene): focus.grab_focus() func _enter_tree(): - focus_restore_timer.one_shot = true - focus_restore_timer.connect("timeout", self, "restore_focus") - add_child(focus_restore_timer) get_tree().connect("node_added", self, "augment_tree") func _input(event): if event is InputEventScreenTouch: pass + +func _process(delta): + if focus_restore_timer and focus_restore_timer.time_left <= 0: + var focus = find_focusable_control(get_tree().root) + if focus and not focus.get_focus_owner(): + print("Restoring focus.") + focus.grab_focus() + focus.grab_click_focus()