pub struct SemanticsCtx { /* private fields */ }Expand description
Collects accesskit::Nodes during a semantics pass, tracking the current
absolute origin/size (mirroring paint’s origin threading) and the
parent/child structure.
Node ids are stable across passes: each node’s id is
composed from the owning ChildPod’s persistent
base id (assigned on first visit from a monotonic, never-reused
RenderRoot allocator and threaded in through
SemanticsCtx::new) and a per-pod sub-node slot (see
[compose_node_id]) — so the same widget keeps the same id every frame,
including across a keyed reorder that relocates its pod. accesskit
TreeUpdates require stable ids for assistive-technology focus continuity.
Bounds are derived from the current absolute origin/size when a node is
pushed, so a widget never computes its own absolute rect.
Implementations§
Source§impl SemanticsCtx
impl SemanticsCtx
Sourcepub fn push_node(&mut self, role: Role, build: impl FnOnce(&mut Node)) -> NodeId
pub fn push_node(&mut self, role: Role, build: impl FnOnce(&mut Node)) -> NodeId
Contribute a leaf semantics node for the current widget.
Allocates a node id, creates an accesskit::Node of role with its
bounds set from the current absolute origin/size, lets build set the
label/state, records it as a child of the enclosing node, and appends it
to the flat map. Returns the allocated id (e.g. so a widget can
set_focused it).
Sourcepub fn push_container(
&mut self,
role: Role,
build: impl FnOnce(&mut Node),
visit: impl FnOnce(&mut SemanticsCtx),
) -> NodeId
pub fn push_container( &mut self, role: Role, build: impl FnOnce(&mut Node), visit: impl FnOnce(&mut SemanticsCtx), ) -> NodeId
Contribute a container semantics node whose accesskit children are the
nodes contributed during visit.
Like push_node but opens a fresh child frame,
runs visit (which recurses into the container’s
ChildPods via
semantics_child), then sets
the collected ids as this node’s Node::set_children. The container node
is appended to the flat map after its children (post-order), but is still
registered as a child of its own parent frame.
Sourcepub fn set_focused(&mut self, id: NodeId)
pub fn set_focused(&mut self, id: NodeId)
Record that the node id holds input focus (accesskit tracks focus at the
tree level, not per-node). The last widget to call this in a pass wins.