mirror of
https://github.com/lightsoutgames/godot-accessibility.git
synced 2024-11-22 03:45:56 +00:00
Change Accessible
initialization strategy.
`Accessible` is now a child of its `Control`. This helps to ensure that everything gets cleaned up as it should. Further, node additions no longer scrape the entire scene. This may introduce regressions and has only been lightly tested, but without it, `ScreenReader` leaked in various circumstances, including some that caused segfaults on exit.
This commit is contained in:
parent
f47450d05d
commit
fa9e10b1ea
|
@ -606,6 +606,8 @@ func _init(node):
|
||||||
if node.is_in_group("accessible"):
|
if node.is_in_group("accessible"):
|
||||||
return
|
return
|
||||||
node.add_to_group("accessible")
|
node.add_to_group("accessible")
|
||||||
|
add_to_group("accessibles")
|
||||||
|
node.add_child(self)
|
||||||
self.node = node
|
self.node = node
|
||||||
if is_focusable(node):
|
if is_focusable(node):
|
||||||
node.set_focus_mode(Control.FOCUS_ALL)
|
node.set_focus_mode(Control.FOCUS_ALL)
|
||||||
|
|
|
@ -11,8 +11,6 @@ signal swipe_down
|
||||||
|
|
||||||
var Accessible = preload("Accessible.gd")
|
var Accessible = preload("Accessible.gd")
|
||||||
|
|
||||||
var accessibles = []
|
|
||||||
|
|
||||||
export var min_swipe_distance = 5
|
export var min_swipe_distance = 5
|
||||||
|
|
||||||
export var tap_execute_interval = 125
|
export var tap_execute_interval = 125
|
||||||
|
@ -32,8 +30,7 @@ func unfocused(node):
|
||||||
|
|
||||||
func augment_node(node):
|
func augment_node(node):
|
||||||
if node is Control:
|
if node is Control:
|
||||||
var accessible = Accessible.new(node)
|
Accessible.new(node)
|
||||||
accessibles.append(accessible)
|
|
||||||
if not node.is_connected("focus_entered", self, "focused"):
|
if not node.is_connected("focus_entered", self, "focused"):
|
||||||
node.connect("focus_entered", self, "focused", [node])
|
node.connect("focus_entered", self, "focused", [node])
|
||||||
if not node.is_connected("mouse_entered", self, "click_focused"):
|
if not node.is_connected("mouse_entered", self, "click_focused"):
|
||||||
|
@ -80,17 +77,13 @@ func set_initial_scene_focus(scene):
|
||||||
focus.grab_focus()
|
focus.grab_focus()
|
||||||
|
|
||||||
func _enter_tree():
|
func _enter_tree():
|
||||||
get_tree().connect("node_added", self, "augment_tree")
|
augment_tree(get_tree().root)
|
||||||
|
get_tree().connect("node_added", self, "augment_node")
|
||||||
connect("swipe_right", self, "swipe_right")
|
connect("swipe_right", self, "swipe_right")
|
||||||
connect("swipe_left", self, "swipe_left")
|
connect("swipe_left", self, "swipe_left")
|
||||||
connect("swipe_up", self, "swipe_up")
|
connect("swipe_up", self, "swipe_up")
|
||||||
connect("swipe_down", self, "swipe_down")
|
connect("swipe_down", self, "swipe_down")
|
||||||
|
|
||||||
func _exit_tree():
|
|
||||||
for accessible in accessibles:
|
|
||||||
accessible.free()
|
|
||||||
accessibles = []
|
|
||||||
|
|
||||||
func press_and_release(action):
|
func press_and_release(action):
|
||||||
var event = InputEventAction.new()
|
var event = InputEventAction.new()
|
||||||
event.action = action
|
event.action = action
|
||||||
|
|
Loading…
Reference in New Issue
Block a user