toddy-iced 0.6.2

Vendored fork of iced for Toddy UI -- a cross-platform GUI library inspired by Elm
Documentation

toddy-iced

Vendored fork of iced maintained for the Toddy UI project. Tracks iced's master branch with additional features. Version numbers are independent of upstream iced releases.

What's different from upstream iced

Accessibility

  • Full accessibility tree via AccessKit (Linux AT-SPI2, Windows UI Automation, macOS NSAccessibility)
  • Accessible properties on all built-in widgets: role, label, description, value, live regions, orientation, relationships (labelled-by, described-by), and more
  • Alt text support for Image and SVG widgets
  • RadioGroup widget with proper radio group semantics (single Tab stop, arrow key navigation, active descendant tracking)
  • Form validation, modal, busy, hidden, and read-only properties
  • Alt-key mnemonics mapped to AccessKit keyboard shortcuts

Keyboard navigation

  • Tab/Shift+Tab focus cycling across all interactive widgets
  • Ctrl+Tab unconditional focus escape from any widget
  • Focus-visible pattern (focus ring on keyboard navigation only, not on mouse clicks)
  • Keyboard activation: Button (Space/Enter), Checkbox (Space), Radio (Space), Toggler (Space), Slider (arrows, Home/End, Page Up/Down), PickList (arrows, Enter/Space, Escape), ComboBox (arrow navigation with Escape state preservation, Tab autocomplete, Enter/Tab select from dropdown)
  • Keyboard scrolling: Page Up/Down, arrows, Home/End; Shift swaps to horizontal axis
  • Scroll-into-view on Tab navigation with nested scrollable cascade (properly handles backward scrolling and scrollbar overlap)
  • Scroll bubbling through ancestor scrollables with tree-wide directional fallback
  • PaneGrid keyboard pane switching (F6/Shift+F6)
  • Modal dialog focus trapping via scoped focus operations
  • Alt-key mnemonic activation with synthetic click injection
  • Escape-to-unfocus with layered dismissal (widget first, then container)

Framework APIs

  • runtime::keyboard module with backend-agnostic keyboard handlers for custom event loops
  • Scoped focus operations (focus_next_within, focus_previous_within) for modal and dialog patterns
  • Mnemonic lookup operation for Alt+letter widget activation
  • Accessibility selectors in iced_test for headless a11y testing
  • focus_color, focus_border_color, focus_shadow, focus_shadow_subtle palette helpers for consistent focus indicators
  • TextEditor undo/redo (Ctrl+Z/Ctrl+Y, Cmd on macOS)
  • TextInput/TextEditor input_purpose for IME hints
  • Markdown code_theme for syntax highlighting themes
  • find_focused runtime operation
  • Runtime font loading at any time (not just startup)

Removed from upstream

  • macOS URL scheme handling (event::listen_url, ReceivedUrl subscription event). Upstream iced uses a forked winit to support macOS deep links / custom URL schemes. This fork switches to upstream winit from crates.io, which doesn't include that feature. We'd like to support it once upstream winit does.

Crate naming

All crates are published under a toddy-iced- prefix. Cargo's package aliasing means Rust source code still uses use iced::* -- the renaming is entirely in Cargo.toml.

License

MIT -- same as upstream iced.