pub struct ComponentWidget<C: Component> { /* private fields */ }Expand description
The retained widget behind a ComponentView.
Owns the component’s local State, the previous child AnyView (diffed
each rebuild), the child element wrapped in a ChildPod, the component’s
reactive Owner, and a component-local BuildCtx id counter.
The child element is stored double-boxed inside the pod (ChildPod::new( Box::new(element)), where element: Box<dyn Widget> is the AnyView’s
element): the extra box lets a rebuild recover the child as
&mut Box<dyn Widget>, the exact type AnyView::rebuild needs to swap the
widget on a concrete-type change. This mirrors frust-widgets’
build_child/rebuild_child pod convention.
§Under the hotpatch feature
The struct is repr(C), starts with the [SeamWitness] the creating image
wrote, and holds the state boxed, so every field sits at the same offset in
every image whatever C::State looks like there. rebuild, teardown and
Drop check the witness first; on a mismatch nothing C-generic touches the
state, and Drop leaks the state box (mem::forget) rather than let another
image’s layout drop or free it, while still disposing the owner.
Trait Implementations§
Source§impl<C: Component> Drop for ComponentWidget<C>
impl<C: Component> Drop for ComponentWidget<C>
Source§impl<C: Component> Widget for ComponentWidget<C>
impl<C: Component> Widget for ComponentWidget<C>
Source§fn layout(&mut self, ctx: &mut LayoutCtx<'_>, bc: &BoxConstraints) -> Size
fn layout(&mut self, ctx: &mut LayoutCtx<'_>, bc: &BoxConstraints) -> Size
bc and return it. The chosen size must satisfy
bc (callers may additionally clamp via BoxConstraints::constrain).Source§fn paint(&mut self, ctx: &mut PaintCtx<'_>, scene: &mut dyn PaintScene)
fn paint(&mut self, ctx: &mut PaintCtx<'_>, scene: &mut dyn PaintScene)
scene. Read moreSource§fn semantics(&self, ctx: &mut SemanticsCtx)
fn semantics(&self, ctx: &mut SemanticsCtx)
ctx. Read moreSource§fn visit_children(&self, visitor: &mut dyn FnMut(&ChildPod))
fn visit_children(&self, visitor: &mut dyn FnMut(&ChildPod))
Source§fn event(&mut self, ctx: &mut EventCtx<'_>, event: &InputEvent) -> EventResult
fn event(&mut self, ctx: &mut EventCtx<'_>, event: &InputEvent) -> EventResult
ctx and reporting whether it was consumed. Read more