You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Accessibility: screen readers read the toolkit's windows (ui/a11y.odin, platform/a11y.odin, platform/a11y_diff.odin, platform/a11y_accesskit.odin (Windows), platform/a11y_stub.odin, native/a11y, docs/accessibility.md). Each build turns the boxes into an accessibility tree (boxes with a role or text; layout boxes left out; ids are the boxes' keys; bounds, focus, states, values, actions) and AccessKit 0.25 exposes it through UI Automation (WM_GETOBJECT). Built only once an assistive technology asked for the window; only the nodes that changed are sent (platform.A11y_Diff). Every widget gives its role, name and states (buttons, check boxes, radios, switches, sliders, steppers, progress, segmented, chips, dropdowns, tabs, fields and text editors with text runs and caret, lists and virtual lists, menus and menu bars, tooltips, toasts as live regions, modals, splitters, accordions, cards, form rows, title bar and caption buttons, status bar, labels, paragraphs, rich paragraphs with their links). The app names its own boxes with ui.a11y(info) (next box) or ui.a11y_set(box, info); ui.a11y_wanted(), ui.a11y_active, ui.a11y_tree, ui.a11y_find, ui.a11y_stats. Requests of assistive technologies (invoke, toggle, select, expand / collapse, focus, set value, increment / decrement, text selection, scrolling, context menu) arrive as the same signals as input; the others in ui.a11y_requests(); ui.a11y_request(key, action), ui.a11y_numeric_request, ui.a11y_inject (tests). Trees of the app's own (documents) are grafted under a node (A11y_Info.graft) and sent with platform.a11y_send. ui.set_window_button_names (translated caption buttons). Platform: a11y_state, a11y_send, a11y_take_request, a11y_available, the update writer (a11y_node, a11y_children, a11y_str...); Event_Kind.Accessibility. Compiled in with -define:A11Y_ACCESSKIT=true (tools\build_a11y.ps1 builds build\a11y\gt_a11y.lib; A11Y_NATIVE_LINK=false when the program's own Rust library carries it). Every update is checked against a mirror of the tree before AccessKit sees it (a broken update is refused, not a crash); text runs and text selections are made safe for AccessKit's text code. ui.a11y_box_text (the text a box shows to a reader). ui.a11y_focus_on(key): the readers' focus on a graft node while the app's view has the keyboard (a focus on a graft whose tree is not there yet waits for it in the adapter).
tools/uia: a small UI Automation client (COM IUIAutomation): elements, control types, names, states, values, invoke / toggle / select / expand / set value / focus. tools/uia_probe: the same as a command, for end-to-end tests of applications (a hidden window works).
Tests: tests/a11y (the tree, incremental updates, requests; with -define:A11Y_ACCESSKIT=true, a hidden window read and driven through UI Automation). CI runs both.