pub struct Padding { /* private fields */ }Expand description
A layout container that adds padding (insets) around a single child.
See the module documentation for the full feature description and
an example. Construct with Padding::new, Padding::uniform, or
Padding::symmetric; attach a child with .child(widget) or
.child_id(id).
Implementations§
Source§impl Padding
impl Padding
Sourcepub fn new(
top: impl Into<Prop<f32>>,
trailing: impl Into<Prop<f32>>,
bottom: impl Into<Prop<f32>>,
leading: impl Into<Prop<f32>>,
) -> Self
pub fn new( top: impl Into<Prop<f32>>, trailing: impl Into<Prop<f32>>, bottom: impl Into<Prop<f32>>, leading: impl Into<Prop<f32>>, ) -> Self
Create a padding with explicit per-side insets.
Argument order mirrors CSS shorthand: (top, trailing, bottom, leading).
trailing and leading are logical — they map to physical right and
left in LTR and are swapped in RTL.
Sourcepub fn uniform(amount: impl Into<Prop<f32>>) -> Self
pub fn uniform(amount: impl Into<Prop<f32>>) -> Self
Create a padding with the same inset on all four sides.
Trait Implementations§
Source§impl Widget for Padding
impl Widget for Padding
Source§fn build(&mut self, ctx: &mut BuildContext<'_>) -> Vec<WidgetId>
fn build(&mut self, ctx: &mut BuildContext<'_>) -> Vec<WidgetId>
Compose child widgets. Called once after the widget is placed in the
arena, and again on environment change (theme switch, locale switch).
Takes
&mut self — store child IDs, signal handles, any state needed later.
Returns the list of root child IDs (empty for leaf widgets).Source§fn layout_response(
&self,
proposal: SizeProposal,
ctx: &LayoutContext<'_>,
) -> LayoutResponse
fn layout_response( &self, proposal: SizeProposal, ctx: &LayoutContext<'_>, ) -> LayoutResponse
Respond to the parent’s size proposal with this widget’s wanted size,
grow/shrink weights, and compression floor (see
LayoutResponse). Read moreSource§fn place_children(
&self,
bounds: Rect,
_proposal: SizeProposal,
children: &mut [WidgetPlacement],
ctx: &LayoutContext<'_>,
)
fn place_children( &self, bounds: Rect, _proposal: SizeProposal, children: &mut [WidgetPlacement], ctx: &LayoutContext<'_>, )
Position children within the allocated bounds. Read more
Source§fn paint(&self, _bounds: Rect, _canvas: &mut Canvas, _ctx: &PaintContext<'_>)
fn paint(&self, _bounds: Rect, _canvas: &mut Canvas, _ctx: &PaintContext<'_>)
Draw the widget’s visual representation.
Source§fn accessibility(&self, _builder: &mut AccessNodeBuilder)
fn accessibility(&self, _builder: &mut AccessNodeBuilder)
Declare this widget’s accessibility identity.
Source§fn type_name(&self) -> &'static str
fn type_name(&self) -> &'static str
Concrete type name of this widget (e.g.
"teksilo_widgets::button::Button"). The default implementation
resolves at the impl site via std::any::type_name::<Self>(),
so calls through &dyn Widget correctly dispatch to the
monomorphized fn for the concrete type — getting the
concrete name through the vtable without per-impl boilerplate. Read moreSource§fn cacheable_layout(&self) -> bool
fn cacheable_layout(&self) -> bool
Whether this widget’s
layout_response may be
memoized by the per-pass layout cache. Defaults to true. Read moreSource§fn wants_after_paint(&self) -> bool
fn wants_after_paint(&self) -> bool
Whether this widget wants its
after_paint
hook to fire each frame. Returning false (the default) saves
a virtual call per widget per frame for the vast majority of
widgets that don’t aggregate descendant geometry. Read moreSource§fn after_paint(&self, _view: &WidgetTreeView<'_>, _ctx: &PaintContext<'_>)
fn after_paint(&self, _view: &WidgetTreeView<'_>, _ctx: &PaintContext<'_>)
Called once per frame after this widget’s subtree has finished
painting. Receives a read-only view of the layout-resolved
arena so a parent can read its descendants’ final bounds —
e.g.
TitleBar aggregates its drag region and control-button
rects into a single HitRegions payload for the Windows
backend’s WM_NCHITTEST. Read moreSource§fn wants_post_paint(&self) -> bool
fn wants_post_paint(&self) -> bool
Whether this widget wants its
post_paint
hook to fire each frame. Returning false (the default) saves a
virtual call per widget per frame for the vast majority of widgets
that don’t draw a foreground over their children. Read moreSource§fn post_paint(
&self,
_bounds: Rect,
_canvas: &mut Canvas,
_ctx: &PaintContext<'_>,
)
fn post_paint( &self, _bounds: Rect, _canvas: &mut Canvas, _ctx: &PaintContext<'_>, )
Draw a foreground layer over this widget’s children. Read more
Source§fn wants_descendant_redirects(&self) -> bool
fn wants_descendant_redirects(&self) -> bool
Whether this widget wants the AT walker to consult its
a11y_redirect_descendant
hook for every descendant during AT tree emission, not
just its direct arena children. Read moreSource§fn a11y_redirect_descendant(
&self,
_self_id: WidgetId,
_descendant: WidgetId,
) -> Option<NodeId>
fn a11y_redirect_descendant( &self, _self_id: WidgetId, _descendant: WidgetId, ) -> Option<NodeId>
Optional redirection hook for AT-tree placement of a child. Read more
Source§fn accessible_title_hint(&self) -> Option<String>
fn accessible_title_hint(&self) -> Option<String>
Suggest an accessible title to an enclosing container that
wraps this widget as content — typically a modal / dialog
shell that wants to propagate the inner content’s visible
title as the shell’s own accessible name. Read more
Source§fn initial_focus_hint(&self) -> Option<WidgetId>
fn initial_focus_hint(&self) -> Option<WidgetId>
Optional hint that directs initial focus to a specific
descendant when this widget is the root of a deferred-built
modal surface. Read more
Which descendant a keyboard request for a context menu should target. Read more
Source§fn as_any(&self) -> Option<&(dyn Any + 'static)>
fn as_any(&self) -> Option<&(dyn Any + 'static)>
Downcast hook. Default implementation returns
None; concrete
widgets override with Some(self) when they want to expose
their concrete type to test-level introspection or reflection.
The trait already bounds on std::any::Any so concrete types
satisfy the 'static requirement.Source§fn as_any_mut(&mut self) -> Option<&mut (dyn Any + 'static)>
fn as_any_mut(&mut self) -> Option<&mut (dyn Any + 'static)>
Mutable counterpart of
as_any. Default
returns None; widgets that want to expose mutable state to
tests (e.g. so a test can mutate a Scene inside a
SceneView post-layout) override with Some(self). Should
follow the same opt-in pattern as as_any: only widgets
that opt into & introspection should opt into &mut.Source§fn clips_children(&self) -> bool
fn clips_children(&self) -> bool
Whether this widget clips its children to its bounds.
Source§fn focus_reveal_rect(&self, _bounds: Rect) -> Option<Rect>
fn focus_reveal_rect(&self, _bounds: Rect) -> Option<Rect>
The rectangle (in absolute tree coordinates) that best represents
this widget when the framework reveals it into an ancestor scroll area on
focus gain. Returning
None (the default) reveals the widget’s whole
bounds — correct for most controls. Read moreSource§fn hit_shape(&self, _local_point: Point, _bounds: Rect) -> bool
fn hit_shape(&self, _local_point: Point, _bounds: Rect) -> bool
Whether the point lies inside this widget’s actual shape, not
just its rectangular bounds. Consulted by hit-testing right after
the bounds check: returning
false for a point that is inside
the bounding box makes the widget transparent to the click there,
so it falls through to whatever sibling is painted underneath
(the same machinery as a fully pass-through node, but shape-aware). Read moreSource§fn preserves_children_on_rebuild(&self) -> bool
fn preserves_children_on_rebuild(&self) -> bool
How
rebuild_single_widget treats this widget’s existing children
when re-running its build(). Read moreSource§fn tooltip_has_content(&self) -> bool
fn tooltip_has_content(&self) -> bool
Whether this widget, used as tooltip content, currently has anything
worth showing. Read more
Source§fn declare_shortcuts(&self) -> Vec<Shortcut>
fn declare_shortcuts(&self) -> Vec<Shortcut>
Declare the rebindable keyboard shortcuts this widget exposes,
without installing handlers. The framework calls this at
arena insertion time (before
build()) and at certain lazy
boundaries (e.g. Switcher walks declarations on its
not-yet-mounted Pending slots), so settings UIs and the
ShortcutRegistry see the keystrokes the moment the owning
container mounts — even if build() hasn’t run. Read moreSource§fn take_handler_set(&mut self) -> Option<HandlerSet>
fn take_handler_set(&mut self) -> Option<HandlerSet>
Extract attached handler set from a
WidgetWithHandlers wrapper.
Called during arena insertion to transfer handlers to the WidgetNode.
Default: returns None (no attached handlers).Source§impl WidgetCatalog for Padding
impl WidgetCatalog for Padding
Source§fn id() -> &'static str
fn id() -> &'static str
Stable, ASCII id (e.g.
"button", "tag_chip"). Used in
CLI args, navigator URLs, and persistence keys.Source§fn group() -> &'static str
fn group() -> &'static str
Group label for navigator organisation
(
"Controls", "Containers", "Composites", …).Source§fn display_name() -> &'static str
fn display_name() -> &'static str
Human-readable label shown in the navigator.
Source§fn knobs() -> KnobSpec
fn knobs() -> KnobSpec
Optional knob declarations. Empty by default — composite
widgets that build via
Scenario variants leave this empty.Source§fn variants() -> Vec<PreviewVariant>
fn variants() -> Vec<PreviewVariant>
Named variants. At least one is required — typically a “default”.
Source§fn build(_variant: &str, knobs: &KnobValues) -> Box<dyn Widget>
fn build(_variant: &str, knobs: &KnobValues) -> Box<dyn Widget>
Construct a fresh widget instance for the named variant, given
runtime knob values. The implementation typically dispatches on
the variant name to handle
Scenario paths and otherwise builds
via the knob values for Knobs variants.Source§fn icon() -> Option<Box<dyn Widget>>
fn icon() -> Option<Box<dyn Widget>>
An icon widget for the navigator palette and the designer’s
outline tree.
None (the default) leaves the consumer to
substitute a generic fallback. Returns a Box<dyn Widget> (not
an IconWidget) so this crate stays free of any widgets-crate
dependency.Source§fn category() -> WidgetCategory
fn category() -> WidgetCategory
How this widget accepts children. The default,
WidgetCategory::Leaf, is correct for every control; container
widgets override it.Source§fn build_with_children(
_variant: &str,
knobs: &KnobValues,
children: Vec<SlottedChild>,
) -> Box<dyn Widget>
fn build_with_children( _variant: &str, knobs: &KnobValues, children: Vec<SlottedChild>, ) -> Box<dyn Widget>
Build with pre-registered children injected.
ContainerA folds
children as ordered bare children; ContainerB routes each by
its slot name; Leaf ignores them. The default ignores
children and delegates to build, so non-container
widgets need no override.Source§fn slots() -> &'static [&'static str]
fn slots() -> &'static [&'static str]
Named slots for a
WidgetCategory::ContainerB widget (e.g.
Card → ["header", "content", "footer"]). Empty for Leaf and
ContainerA.Auto Trait Implementations§
impl !RefUnwindSafe for Padding
impl !Send for Padding
impl !Sync for Padding
impl !UnwindSafe for Padding
impl Freeze for Padding
impl Unpin for Padding
impl UnsafeUnpin for Padding
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
Mutably borrows from an owned value. Read more
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>
Convert
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>
Convert
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)
Convert
&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)
Convert
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.impl<T> ErasedDestructor for Twhere
T: 'static,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<W> IntoTeksiChild for Wwhere
W: Widget + 'static,
impl<W> IntoTeksiChild for Wwhere
W: Widget + 'static,
fn into_pending(self) -> PendingChild
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<W> WidgetBuilder for Wwhere
W: Widget + 'static,
impl<W> WidgetBuilder for Wwhere
W: Widget + 'static,
fn on_tap( self, f: impl FnMut(&TapEvent, &mut EventContext<'_>) + 'static, ) -> WidgetWithHandlers<Self>
fn on_double_tap( self, f: impl FnMut(&TapEvent, &mut EventContext<'_>) + 'static, ) -> WidgetWithHandlers<Self>
fn on_triple_tap( self, f: impl FnMut(&TapEvent, &mut EventContext<'_>) + 'static, ) -> WidgetWithHandlers<Self>
fn on_long_press( self, f: impl FnMut(&TapEvent, &mut EventContext<'_>) + 'static, ) -> WidgetWithHandlers<Self>
Restrict (or extend) the set of pointer buttons that fire
on_tap. Default is ButtonMask::PRIMARY.Restrict (or extend) the set of pointer buttons that fire
on_double_tap. Default ButtonMask::PRIMARY.Restrict (or extend) the set of pointer buttons that fire
on_triple_tap. Default ButtonMask::PRIMARY.Restrict (or extend) the set of pointer buttons that fire
on_long_press. Default ButtonMask::PRIMARY.Source§fn dim_when_inactive(self, factor: f32) -> DimWhenInactive
fn dim_when_inactive(self, factor: f32) -> DimWhenInactive
Dim this widget’s subtree to
factor opacity whenever the host window
is inactive (not focused / occluded), restoring full opacity when it
becomes active again. The opt-in, per-widget layer of the window-active
appearance model — for custom content an app wants to fade back when its
window isn’t the active one. Stock widgets handle their own
inactive appearance (caret hiding, selection desaturation) and need no
wrapping. Layout- and a11y-transparent; the opacity snaps (no tween),
which is correct under prefers-reduced-motion. See
DimWhenInactive.Source§fn dim_when_inactive_default(self) -> DimWhenInactive
fn dim_when_inactive_default(self) -> DimWhenInactive
dim_when_inactive with the default factor
(DEFAULT_DIM_FACTOR, 70 %).fn on_drag( self, f: impl FnMut(DragPhase, &mut EventContext<'_>) + 'static, ) -> WidgetWithHandlers<Self>
fn on_swipe( self, f: impl FnMut(SwipeDirection, f32, &mut EventContext<'_>) + 'static, ) -> WidgetWithHandlers<Self>
fn on_pinch( self, f: impl FnMut(PinchPhase, &mut EventContext<'_>) + 'static, ) -> WidgetWithHandlers<Self>
fn on_focus( self, f: impl FnMut(bool, &mut EventContext<'_>) + 'static, ) -> WidgetWithHandlers<Self>
fn on_key( self, f: impl FnMut(&WidgetEvent, &mut EventContext<'_>) -> EventResponse + 'static, ) -> WidgetWithHandlers<Self>
Source§fn on_key_preview(
self,
f: impl FnMut(&WidgetEvent, &mut EventContext<'_>) -> EventResponse + 'static,
) -> WidgetWithHandlers<Self>
fn on_key_preview( self, f: impl FnMut(&WidgetEvent, &mut EventContext<'_>) -> EventResponse + 'static, ) -> WidgetWithHandlers<Self>
Strict-ancestor key preview. See
HandlerSet::on_key_preview.fn on_pointer_event( self, f: impl FnMut(&WidgetEvent, &mut EventContext<'_>) -> EventResponse + 'static, ) -> WidgetWithHandlers<Self>
fn on_hover( self, f: impl FnMut(bool, &mut EventContext<'_>) + 'static, ) -> WidgetWithHandlers<Self>
fn on_scroll( self, f: impl FnMut(&WidgetEvent, &mut EventContext<'_>) -> EventResponse + 'static, ) -> WidgetWithHandlers<Self>
fn on_access_action( self, f: impl FnMut(Action, &mut EventContext<'_>) -> EventResponse + 'static, ) -> WidgetWithHandlers<Self>
fn focusable(self, focusable: bool) -> WidgetWithHandlers<Self>
fn tab_index(self, index: i32) -> WidgetWithHandlers<Self>
fn cursor(self, cursor: CursorIcon) -> WidgetWithHandlers<Self>
fn clips_children_on(self, clips: bool) -> WidgetWithHandlers<Self>
Source§fn ime_input(self, ctx: ImeContext) -> WidgetWithHandlers<Self>
fn ime_input(self, ctx: ImeContext) -> WidgetWithHandlers<Self>
Declare this node a text-input surface, enabling the OS input method
(with
ctx’s purpose) while it is focused. See crate::ime.Source§fn event_pass_through(self, pass_through: bool) -> WidgetWithHandlers<Self>
fn event_pass_through(self, pass_through: bool) -> WidgetWithHandlers<Self>
Make the widget invisible to pointer hit-testing. See
HandlerSet::event_pass_through.Source§fn gesture_dead_zone(self, dead_zone: bool) -> WidgetWithHandlers<Self>
fn gesture_dead_zone(self, dead_zone: bool) -> WidgetWithHandlers<Self>
Mark this widget’s subtree a gesture dead zone. See
HandlerSet::gesture_dead_zone.Source§fn keyboard_capture(self, capture: bool) -> WidgetWithHandlers<Self>
fn keyboard_capture(self, capture: bool) -> WidgetWithHandlers<Self>
Mark this widget a keyboard capture surface (terminals, game
viewports): while focused,
KeyDowns bypass shortcut resolution.
See HandlerSet::keyboard_capture.Source§fn hit_transparent(self, transparent: bool) -> WidgetWithHandlers<Self>
fn hit_transparent(self, transparent: bool) -> WidgetWithHandlers<Self>
Make this widget and its whole subtree invisible to pointer
hit-testing (decorative overlays). See
HandlerSet::hit_transparent.Set a context-menu factory. See
HandlerSet::context_menu for the full contract.Source§fn focus_within(self, signal: Signal<bool>) -> WidgetWithHandlers<Self>
fn focus_within(self, signal: Signal<bool>) -> WidgetWithHandlers<Self>
Bind a
Signal<bool> the framework writes when a strict
descendant has focus. See HandlerSet::focus_within.Source§fn hover_within(self, signal: Signal<bool>) -> WidgetWithHandlers<Self>
fn hover_within(self, signal: Signal<bool>) -> WidgetWithHandlers<Self>
Bind a
Signal<bool> the framework writes when a strict
descendant is hovered. See HandlerSet::hover_within.Source§fn visible_when(self, state: impl Into<Prop<bool>>) -> WidgetWithHandlers<Self>
fn visible_when(self, state: impl Into<Prop<bool>>) -> WidgetWithHandlers<Self>
Bind this node’s visibility (
bool / Signal<bool> / Prop<bool>) as
a builder property, so teksu! can write visible_when: sig. Equivalent
to ctx.visible_when(id, ..). See HandlerSet::visible_when.fn on_drag_hover( self, f: impl FnMut(&DragPayload, Point, &mut EventContext<'_>) -> DropFeedback + 'static, ) -> WidgetWithHandlers<Self>
fn on_drag_leave( self, f: impl FnMut(&mut EventContext<'_>) + 'static, ) -> WidgetWithHandlers<Self>
fn on_drag_tick( self, f: impl FnMut(Point, &mut EventContext<'_>) + 'static, ) -> WidgetWithHandlers<Self>
fn on_drop( self, f: impl FnMut(DragPayload, Point, &mut EventContext<'_>) -> bool + 'static, ) -> WidgetWithHandlers<Self>
Source§fn on_drag_ended(
self,
f: impl FnMut(DropOutcome, &mut EventContext<'_>) + 'static,
) -> WidgetWithHandlers<Self>
fn on_drag_ended( self, f: impl FnMut(DropOutcome, &mut EventContext<'_>) + 'static, ) -> WidgetWithHandlers<Self>
Set the drag-ended handler on a drag source. See
HandlerSet::on_drag_ended.