Skip to main content

Component

Trait Component 

Source
pub trait Component: Any {
Show 25 methods // Required methods fn props(&self) -> &Props; fn props_mut(&mut self) -> &mut Props; fn slot(&self) -> Slot; fn measure(&mut self, ctx: &UiContext) -> (u16, u16); fn height(&mut self, ctx: &UiContext, width: u16) -> u16; fn paint(&mut self, pc: &mut PaintCtx<'_>, rect: Rect); // Provided methods fn kind(&self) -> &'static str { ... } fn children(&self) -> &[Cached] { ... } fn children_mut(&mut self) -> &mut [Cached] { ... } fn place(&mut self, ctx: &UiContext, content: Rect) { ... } fn paints_border(&self) -> bool { ... } fn paints_background(&self) -> bool { ... } fn gradient_bounds(&self, content: Rect) -> Option<Rect> { ... } fn resize_tail(&mut self) -> Option<ResizeTail<'_>> { ... } fn validation_error(&self) -> Option<String> { ... } fn stretch_in_row(&self) -> bool { ... } fn focusable(&self) -> bool { ... } fn enter(&mut self, forward: bool) { ... } fn ring(&self, out: &mut Vec<Slot>) { ... } fn key(&mut self, ec: &mut EventCtx<'_>, key: Key) -> Flow { ... } fn mouse( &mut self, ec: &mut EventCtx<'_>, tag: HitTag, at: (u16, u16), rect: Rect, mouse: Mouse, ) -> Flow { ... } fn paste(&mut self, ec: &mut EventCtx<'_>, text: &str) -> Flow { ... } fn paste_raw(&mut self, ec: &mut EventCtx<'_>, text: &str) -> Flow { ... } fn value(&self, out: &mut Map<String, Value>) { ... } fn set_text(&mut self, ctx: &UiContext, text: Str) -> bool { ... }
}
Expand description

A retained UI component.

Required Methods§

Source

fn props(&self) -> &Props

Component properties.

Source

fn props_mut(&mut self) -> &mut Props

Mutable component properties.

Source

fn slot(&self) -> Slot

Stable identity.

Source

fn measure(&mut self, ctx: &UiContext) -> (u16, u16)

Content width bounds, exclusive of this component’s chrome.

Source

fn height(&mut self, ctx: &UiContext, width: u16) -> u16

Content height at the supplied content width.

Source

fn paint(&mut self, pc: &mut PaintCtx<'_>, rect: Rect)

Paints content inside the supplied content rectangle.

Provided Methods§

Source

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

Concrete implementation name for debug tooling; defaults to the type’s full path via std::any::type_name. The OMP_TUI_DEBUG tree dump trims it to the trailing path segment.

Source

fn children(&self) -> &[Cached]

Every owned child, including embedded inactive subtrees.

Source

fn children_mut(&mut self) -> &mut [Cached]

Every owned child, including embedded inactive subtrees.

Source

fn place(&mut self, ctx: &UiContext, content: Rect)

Places children inside the supplied content rectangle.

Source

fn paints_border(&self) -> bool

Whether Cached should paint this component’s border property as chrome.

Source

fn paints_background(&self) -> bool

Whether Cached should paint this component’s background property across its rectangle. Components that own a partial background fill opt out and paint it themselves.

Source

fn gradient_bounds(&self, content: Rect) -> Option<Rect>

A narrowed projection frame for two-stop fg=/bg= ramps, given the painted content rectangle. None projects across the full chrome; content-sized leaves (crate::components::Pre) return their authored extent so the ramp completes across the glyphs instead of the stretched layout width.

Source

fn resize_tail(&mut self) -> Option<ResizeTail<'_>>

Opt-in viewport-tail provider for resize drags: children a drag frame may compose bottom-up, with the vertical gap between them. None — the default — renders this component whole.

crate::Ui::compose_resize_tail walks providers backward at the new width, laying out and painting only enough children to fill one screen per drag frame; full-document reflow waits for the settled crate::Ui::resize. Only chrome-neutral vertical flows may opt in: the walk skips the provider’s own background, border, and alignment, so styled containers must return None and render normally (crate::components::Col gates itself accordingly).

Source

fn validation_error(&self) -> Option<String>

A validation error blocking submission — an unmet required or match= constraint owned by this component’s internal records; None when valid. Component-level props are checked by the caller.

Source

fn stretch_in_row(&self) -> bool

Whether a row should stretch this component across its cross axis.

Source

fn focusable(&self) -> bool

Whether this component contributes its own slot to the focus ring. The default honors the focus flag, so any container can opt into keyboard navigation from markup.

Source

fn enter(&mut self, forward: bool)

Positions internal selection when focus enters from either direction.

Source

fn ring(&self, out: &mut Vec<Slot>)

Appends focusable slots in document order.

Source

fn key(&mut self, ec: &mut EventCtx<'_>, key: Key) -> Flow

Handles a keyboard event.

Source

fn mouse( &mut self, ec: &mut EventCtx<'_>, tag: HitTag, at: (u16, u16), rect: Rect, mouse: Mouse, ) -> Flow

Handles a mouse gesture over one of this component’s hit regions.

Source

fn paste(&mut self, ec: &mut EventCtx<'_>, text: &str) -> Flow

Pastes text into this component: Flow::Consumed repaints, Flow::Event additionally surfaces a crate::UiEvent, and Flow::Skip leaves the paste unhandled.

Source

fn paste_raw(&mut self, ec: &mut EventCtx<'_>, text: &str) -> Flow

Pastes text verbatim, bypassing any smart-paste interpretation the component applies in Component::paste (drop classification, large-paste collapse). Defaults to Component::paste for components without such interpretation.

Source

fn value(&self, out: &mut Map<String, Value>)

Adds this component’s named value to an output object.

Source

fn set_text(&mut self, ctx: &UiContext, text: Str) -> bool

Replaces text content where supported.

Trait Implementations§

Source§

impl IntoComponent for Box<dyn Component>

Source§

fn into_component(self) -> Box<dyn Component>

Performs the conversion.

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§