Skip to main content

ComponentWidget

Struct ComponentWidget 

Source
pub struct ComponentWidget<C: Component> { /* private fields */ }
Expand description

The retained widget behind a ComponentView.

The child element is double-boxed inside the pod (ChildPod::new(Box::new(element))) so a rebuild can recover the &mut Box<dyn Widget> that AnyView::rebuild needs to swap the widget on a concrete-type change.

Under hotpatch the struct is repr(C), starts with the [SeamWitness] of the creating image and boxes the state, so field offsets are image-independent. rebuild, teardown and Drop check the witness first; on a mismatch Drop leaks the state box rather than let another image’s layout free it, and still disposes the owner.

Trait Implementations§

Source§

impl<C: Component> Drop for ComponentWidget<C>

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

fn pin_drop(self: Pin<&mut Self>)

🔬This is a nightly-only experimental API. (pin_ergonomics)
Execute the destructor for this type, but different to Drop::drop, it requires self to be pinned. Read more
Source§

impl<C: Component> SliverWidget for ComponentWidget<C>

Source§

fn layout_sliver( &mut self, ctx: &mut LayoutCtx<'_>, sc: &SliverConstraints, ) -> SliverGeometry

Pass-through, like Widget::layout: sc reaches the child unchanged.

Source§

impl<C: Component> Widget for ComponentWidget<C>

Source§

fn as_sliver(&mut self) -> Option<&mut dyn SliverWidget>

A component is a sliver exactly when its child is. The sliver face is the component itself, so layout runs through the child pod and leaves it sized for this component’s paint, hit test and semantics.

Source§

fn layout(&mut self, ctx: &mut LayoutCtx<'_>, bc: &BoxConstraints) -> Size

Choose a size within bc and return it. Under a render root the call may be skipped (see ChildPod::layout_child), so the result must depend only on bc, the context’s globals and state changed through a pod-dirtying channel: a LAYOUT rebuild, request_layout, an unpaced frame request, or a handled / redraw-requesting event.
Source§

fn paint(&mut self, ctx: &mut PaintCtx<'_>, scene: &mut dyn PaintScene)

Emit draw commands into scene. Paint may advance animation state; it must then call PaintCtx::request_frame until the animation rests.
Source§

fn semantics(&self, ctx: &mut SemanticsCtx)

Contribute accessibility node(s) after layout; defaults to none. A container forwards via ChildPod::semantics_child.
Source§

fn visit_children(&self, visitor: &mut dyn FnMut(&ChildPod))

Visit this widget’s owned ChildPods in paint order, for read-only tooling; defaults to none and must not mutate pass state.
Source§

fn event(&mut self, ctx: &mut EventCtx<'_>, event: &InputEvent) -> EventResult

Handle an input event and report whether it was consumed; defaults to EventResult::Ignored. Containers forward via ChildPod::event_child.
Source§

fn type_name(&self) -> &'static str

This widget’s concrete type name, for diagnostics only (docs/LIMITATIONS.md focus-wrapper-erasure-swap-blind); override only in a transparent wrapper.
Source§

fn is_focusable(&self) -> bool

Whether keyboard traversal (Tab / Shift+Tab at the root) may stop on this widget’s pod.
Source§

fn visit_focus_children(&self, visitor: &mut dyn FnMut(&ChildPod))

Visit the children traversal may enter, in focus order; defaults to Widget::visit_children. A container showing only some children narrows it.

Auto Trait Implementations§

§

impl<C> !Freeze for ComponentWidget<C>

§

impl<C> !RefUnwindSafe for ComponentWidget<C>

§

impl<C> !Send for ComponentWidget<C>

§

impl<C> !Sync for ComponentWidget<C>

§

impl<C> !UnwindSafe for ComponentWidget<C>

§

impl<C> Unpin for ComponentWidget<C>
where <C as Component>::State: Unpin, AnyView<<C as Component>::State>: Unpin,

§

impl<C> UnsafeUnpin for ComponentWidget<C>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> StorageAccess<T> for T

Source§

fn as_borrowed(&self) -> &T

Borrows the value.
Source§

fn into_taken(self) -> T

Takes the value.
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.