diff --git a/Accessible.gd b/Accessible.gd index 763465b..ec2efbb 100644 --- a/Accessible.gd +++ b/Accessible.gd @@ -489,12 +489,17 @@ func focused(): TTS.speak(node.hint_tooltip, false) spoke_hint_tooltip = false +var timer + func unfocused(): print_debug("Unfocused") position_in_children = 0 - yield(node.get_tree().create_timer(1), "timeout") + timer = node.get_tree().create_timer(1) + yield(timer, "timeout") if not node.get_focus_owner(): node.get_tree().root.warp_mouse(node.rect_global_position) + timer.unreference() + timer = null func click_focused(): if node.has_focus(): diff --git a/ScreenReader.gd b/ScreenReader.gd index 329b2a7..96bf01f 100644 --- a/ScreenReader.gd +++ b/ScreenReader.gd @@ -78,4 +78,7 @@ func _enter_tree(): func _exit_tree(): for accessible in accessibles: + if accessible.timer != null: + accessible.timer.unreference() + accessible.timer = null accessible.free()