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.
Auto Trait Implementations§
impl Freeze for SemanticsCtx
impl RefUnwindSafe for SemanticsCtx
impl Send for SemanticsCtx
impl Sync for SemanticsCtx
impl Unpin for SemanticsCtx
impl UnsafeUnpin for SemanticsCtx
impl UnwindSafe for SemanticsCtx
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.