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§
Sourcefn measure(&mut self, ctx: &UiContext) -> (u16, u16)
fn measure(&mut self, ctx: &UiContext) -> (u16, u16)
Content width bounds, exclusive of this component’s chrome.
Provided Methods§
Sourcefn kind(&self) -> &'static str
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.
Sourcefn children_mut(&mut self) -> &mut [Cached]
fn children_mut(&mut self) -> &mut [Cached]
Every owned child, including embedded inactive subtrees.
Sourcefn place(&mut self, ctx: &UiContext, content: Rect)
fn place(&mut self, ctx: &UiContext, content: Rect)
Places children inside the supplied content rectangle.
Sourcefn paints_border(&self) -> bool
fn paints_border(&self) -> bool
Whether Cached should paint this component’s border property as
chrome.
Sourcefn paints_background(&self) -> bool
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.
Sourcefn gradient_bounds(&self, content: Rect) -> Option<Rect>
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.
Sourcefn resize_tail(&mut self) -> Option<ResizeTail<'_>>
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).
Sourcefn validation_error(&self) -> Option<String>
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.
Sourcefn stretch_in_row(&self) -> bool
fn stretch_in_row(&self) -> bool
Whether a row should stretch this component across its cross axis.
Sourcefn focusable(&self) -> bool
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.
Sourcefn enter(&mut self, forward: bool)
fn enter(&mut self, forward: bool)
Positions internal selection when focus enters from either direction.
Sourcefn mouse(
&mut self,
ec: &mut EventCtx<'_>,
tag: HitTag,
at: (u16, u16),
rect: Rect,
mouse: Mouse,
) -> Flow
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.
Sourcefn paste(&mut self, ec: &mut EventCtx<'_>, text: &str) -> Flow
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.
Sourcefn paste_raw(&mut self, ec: &mut EventCtx<'_>, text: &str) -> Flow
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.
Trait Implementations§
Source§impl IntoComponent for Box<dyn Component>
impl IntoComponent for Box<dyn Component>
Source§fn into_component(self) -> Box<dyn Component>
fn into_component(self) -> Box<dyn Component>
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".