Commit Graph

167 Commits

Author SHA1 Message Date
b413961c52 Separate out editor accessibility from addition of the ScreenReader node. 2019-12-21 10:13:06 -06:00
b4acee6dea Support .godot-accessibility-editor-settings.ini file in project root. Currently supports setting rate and globally disabling plugin. 2019-12-21 09:54:12 -06:00
9f93730aa8 Switch order of Range and ProgressBar checks, resolving crash and restoring progress updates. 2019-12-20 13:59:31 -06:00
0a96ddb2e4 Don't hard-code rate to maximum. 2019-10-18 12:10:11 -05:00
6982e2023d Don't speak range changes if the node isn't focused. 2019-10-18 11:35:04 -05:00
e1d24a00a4 Basic support for Range.
Tested with `HSlider` and has basic support for other widget types, but I'm only adding support for what I'm immediately using or can access via the editor.
2019-10-18 10:58:16 -05:00
82b24801a3 Basic stub functionality for TextEdit.
This can barely be called "support." It reads all text as a single block. I'd like to at least be able to unfocus the `TextEdit`, but it's going to require a custom key. Ctrl-tab and Ctrl-shift-tab seem like good candidates, but the editor grabs those already.
2019-10-18 10:44:31 -05:00
fc3c70e16c #2: Fix incorrect method name in signal connection.
Fixes #2.
2019-10-17 10:02:55 -05:00
b7facbdf69 Merge branch 'ellenhp/godot-accessibility-fix_tree_multiselect' 2019-10-17 09:41:41 -05:00
Ellen Poe
fc475ae6b8 Fix tree traversal bug 2019-10-16 18:09:01 -07:00
dced450b46 Substitute is checks with is_class so they'll work in editor and export builds. 2019-10-14 09:36:08 -05:00
fdd5f1a5f6 Assorted changes:
* Try to improve list selection handling.
 * Use `get_class()` to check class membership for editor classes not included in exported games.
2019-10-10 09:49:54 -05:00
792504deb6 Set default rate to 100. 2019-10-10 09:49:33 -05:00
6b0c920549 Crude mitigation for out-of-bounds list indices when arrowing through ItemList. 2019-10-08 14:29:20 -05:00
23fd884b2e Various changes:
* Add automatic speaking of percentages when changed.
 * Remove icon for now.
2019-10-08 08:56:51 -05:00
723d4c298c Very naive support for LineEdit input, only single-character changes for now. 2019-10-03 10:28:54 -05:00
d0d80b1cb2 If unfocused, don't set an initial focus if one was restored in the meantime. 2019-10-03 09:52:41 -05:00
18943786a9 When setting up initial tree selection, don't render the node unless it is focused. 2019-10-03 09:47:24 -05:00
5a38aac4a9 Make naming a bit more consistent with signals. 2019-10-03 09:41:49 -05:00
0783dfb548 Add global signal-catching for better handling of cases where focus is lost. 2019-10-03 09:34:22 -05:00
0e8b6ae9e8 Use global TTS singleton to avoid passing around instances. 2019-10-02 16:20:25 -05:00
8ef356b9bb Special-case disallowing focus on bunches of nodes. 2019-09-30 15:24:02 -05:00
84857e1222 Present checkable menu items. 2019-09-30 15:15:00 -05:00
41550ceef6 When right-clicking TreeItems, set the click position to their center. 2019-09-30 14:48:11 -05:00
1faed4fee1 Speak a bit more context when switching screens, and don't pre-empt. 2019-09-30 14:28:36 -05:00
1037becadf Only prevent checkbox toggles if node is focused. 2019-09-30 09:47:42 -05:00
5bf3bb285b Set rate to maximum for now. 2019-09-30 09:46:16 -05:00
e68765165c Revert "Add group navigation."
Going to be too complicated to implement the way I wanted to for now. Need to rethink this.

This reverts commit cafd50675b.
2019-09-26 09:03:46 -05:00
cafd50675b Add group navigation.
Moving through every focusable widget by tab/shift-tab is very slow. This commit introduces the concept of groups--widgets that can be skipped through via ctrl-tab/ctrl-shift-tab.

Right now this only includes containers where all children are focusable, but I'll expand the definition of groups over time to make navingating to large areas of the UI easier..
2019-09-26 08:10:48 -05:00
49d6eb8e59 Rename check_caret_moved to be more consistent. 2019-09-26 07:52:51 -05:00
24d3ea596b Slightly better ItemList handling, though for some reason I can't make it work in file selections. 2019-09-25 17:18:01 -05:00
065f62181b Merge branch 'master' of https://gitlab.com/lightsoutgames/godot-accessibility 2019-09-25 09:18:20 -05:00
ca73c2f255 Another attempted fix for cases where focus is unset and nothing can be done.
When we unfocus, wait a second. If we don't have focus after the timer elapses, warp the mouse to the global coordinates.

This seems to restore some semblance of focus whenever it is unset, while not breaking the case where a focus is set and the mouse suddenly jumps, thus changing the focus again.
2019-09-25 09:15:49 -05:00
af1bd8ec91 Merge branch 'master' of https://gitlab.com/lightsoutgames/godot-accessibility 2019-09-25 09:12:44 -05:00
7630fa3ec0 Capture arrow input on trees so UI focus doesn't skitter off randomly. 2019-09-25 09:12:40 -05:00
636c275c7f Use create_timer rather than keeping one around only for AcceptDialog. 2019-09-25 09:07:26 -05:00
e60f5dcda1 Revert "Use queue_free rather than free."
This reverts commit 0786b6e6ab.
2019-09-25 07:31:18 -05:00
1654b3729f Use tts.singular_or_plural. 2019-09-24 18:07:22 -05:00
0786b6e6ab Use queue_free rather than free. 2019-09-24 17:36:27 -05:00
eeb8a3a171 Check for the presence of added methods so the plugin will partially work on unpatched engines. 2019-09-24 15:13:15 -05:00
d0afc9e4e3 Fix logic for right-arrowing through tree columns in light of other recent tree selection changes. 2019-09-24 14:42:46 -05:00
e82fd7f8b8 Add ScreenReader as a custom node in the editor plugin. 2019-09-24 09:20:45 -05:00
981606ab21 Refactor to support running both in the editor and in game UIs.
Here I add a `ScreenReader` `Node` which, when added to the `SceneTree`, should read the contents of any supported `Control`. I also do a bit of cleanup on filenames, as well as breaking the editor plugin support into its own class.
2019-09-24 09:01:37 -05:00
8f9a0cd4d7 TreeItem.get_next_visible(...) seems to iterate through children just fine, so use it for selecting only one item. 2019-09-21 09:47:15 -05:00
45c44352ba Fixes:
* It was the mouse warping, not the grabbing of focus, that caused keyboard traversal issues. Now we only mouse-warp prior to simulating a right-click via Menu.
 * Despite what the docs say, `id_focused` seems to pass an index, not an ID. Now popup menu items speak more accurately.
2019-09-21 09:19:00 -05:00
977b3407ea Don't automatically grab keyboard focus on mouse-enter, since that seems to interfere with keyboard traversal somehow. 2019-09-21 08:58:03 -05:00
de2f22b0c2 Only speak tab changes if tabs have focus. 2019-09-21 08:54:12 -05:00
77db176e20 For trees allowing multiple selection, force selection of a single row for now.
I'm not immediately sure how to present multiple tree selections. I also don't know if I can control selection status from the input events. So, for the time being, we force a single row to be selected. This isn't the most ideal solution, but it makes debugging other issues easier, so I'll use it for now to unblock other work.
2019-09-20 10:28:17 -05:00
f11edefdb5 Speak classes of controls for which we don't have a handler, and minor naming cleanup. 2019-09-20 08:55:47 -05:00
56a7652656 Assorted changes:
* Use new TTS.gd script rather than loading directly. TTS.gd gives us flexibility to handle TTS with the native Rust plugin on some platforms, something like a Java module under Android, etc.
 * Make `Panel` focusable. This handles the case where exiting a game from the editor places focus on an element without focus, thus breaking keyboard navigation.
 * Log when we attempt to grab focus so I can debug cases where focus tries to go somewhere it can't.
2019-09-17 10:42:58 -05:00