Struct ListRow
pub struct ListRow { /* private fields */ }Expand description
A retained list row. Construct with a stable id and a title; press activates it (pointer, Enter/Space, or assistive technology).
Implementations§
§impl ListRow
impl ListRow
pub fn new(id: impl Into<String>, title: impl Into<String>) -> ListRow
pub fn dense(self) -> ListRow
pub fn dense(self) -> ListRow
Show the row as a dense row: one quiet line at the caption’s size, as tall as that line and its inset (a reference under content).
pub fn row_height(self, px: f32) -> ListRow
pub fn row_height(self, px: f32) -> ListRow
Stand the row px tall, rather than the list’s row height for what it holds
(ListRowFace::row_height).
pub fn set_dense(&mut self)
pub fn set_dense(&mut self)
Self::dense, for a row a host has already built.
pub const fn is_dense(&self) -> bool
pub const fn is_dense(&self) -> bool
Whether the row stands dense (ListRowFace::dense).
pub fn card(self) -> ListRow
pub fn card(self) -> ListRow
Show the row as a card: a surface of its own, its title wrapped over up to
CARD_TITLE_LINES lines, and its facts on a line under the text instead of beside it
(a board’s card).
pub fn set_card(&mut self)
pub fn set_card(&mut self)
Self::card, for a row a host has already built.
pub const fn is_card(&self) -> bool
pub const fn is_card(&self) -> bool
Whether the row stands as a card: its own surface, as a card component showed it
(CardBody::show_as_card).
pub fn set_activate(&mut self, event: Event)
pub fn set_activate(&mut self, event: Event)
Have a press on the row (or Enter or Space while it has the keyboard) report event:
what a component’s card does when it opens what it stands for.
pub fn shortcuts(self, shortcuts: Vec<(Shortcut, Rc<dyn Fn()>)>) -> ListRow
pub fn shortcuts(self, shortcuts: Vec<(Shortcut, Rc<dyn Fn()>)>) -> ListRow
The commands the row’s menu offers with the keys they declare: pressing one while the row has the keyboard runs it, as choosing it in the menu does.
pub fn two_line_title(self) -> ListRow
pub fn two_line_title(self) -> ListRow
pub fn title_family(self, family: FontChoice) -> ListRow
pub fn title_family(self, family: FontChoice) -> ListRow
See ListRowFace::title_family: only for a list of fonts.
pub fn two_line_secondary(self) -> ListRow
pub fn two_line_secondary(self) -> ListRow
pub fn secondary_lines(self, lines: u8) -> ListRow
pub fn secondary_lines(self, lines: u8) -> ListRow
pub fn note(self, text: impl Into<String>) -> ListRow
pub fn note(self, text: impl Into<String>) -> ListRow
See ListRowFace::note.
pub fn meta(self, text: impl Into<String>) -> ListRow
pub fn meta(self, text: impl Into<String>) -> ListRow
See ListRowFace::meta.
pub fn meta_spans(self, spans: &[(&str, Tone)]) -> ListRow
pub fn meta_spans(self, spans: &[(&str, Tone)]) -> ListRow
pub fn item(self, item: impl Into<String>) -> ListRow
pub fn item(self, item: impl Into<String>) -> ListRow
Say which item of its collection the row shows
(AccessNode::item): a task’s issue,
a note’s block. An action naming that item is drawn on this row.
pub fn value(self, text: impl Into<String>) -> ListRow
pub fn value(self, text: impl Into<String>) -> ListRow
See ListRowFace::value.
pub fn title_value(self, text: impl Into<String>) -> ListRow
pub fn title_value(self, text: impl Into<String>) -> ListRow
pub fn mark(self, icon: Icon) -> ListRow
pub fn mark(self, icon: Icon) -> ListRow
See ListRowFace::mark.
pub fn mark_tone(self, tone: Tone) -> ListRow
pub fn mark_tone(self, tone: Tone) -> ListRow
The tone the row’s mark and its checkbox ring read in
(ListRowFace::mark_tone).
See ListRowFace::tags.
pub fn count(self, count: usize) -> ListRow
pub fn count(self, count: usize) -> ListRow
See ListRowFace::count.
pub fn avatar(
self,
name: impl Into<String>,
identity: impl Into<String>,
) -> ListRow
pub fn avatar( self, name: impl Into<String>, identity: impl Into<String>, ) -> ListRow
A person’s avatar in the leading column: the row is the person (a contact, an
account). Something a person is on shows them as a fact instead
(ListRowFace::avatar), on its facts column.
pub fn avatar_space(self) -> ListRow
pub fn avatar_space(self) -> ListRow
The room an avatar takes, left empty (RowLeading::AvatarSpace): for
a row without one in a list whose rows show avatars.
pub fn avatar_glyph(self, icon: Icon) -> ListRow
pub fn avatar_glyph(self, icon: Icon) -> ListRow
An app without artwork of its own in the leading avatar: its glyph on
the neutral square, the mark the shell shows for it
(AvatarFace::glyph).
pub fn avatar_image(self, image: ImageData) -> ListRow
pub fn avatar_image(self, image: ImageData) -> ListRow
The person’s picture for the leading avatar.
pub fn with_profile_photo(self, photo: &ProfilePhoto) -> ListRow
pub fn with_profile_photo(self, photo: &ProfilePhoto) -> ListRow
Use canonical normalized public identity pixels; no files are opened.
pub fn with_feel(self, feel: Feel) -> ListRow
pub fn with_feel(self, feel: Feel) -> ListRow
Play the row’s own motion — its mark, its coming and going in a list — at feel rather
than the theme’s pace.
pub fn set_feel(&mut self, feel: Feel)
pub fn set_feel(&mut self, feel: Feel)
Self::with_feel on a row already built.
pub fn checkbox_view(
self,
checked: bool,
on_toggle: impl FnMut(bool) + 'static,
) -> ListRow
pub fn checkbox_view( self, checked: bool, on_toggle: impl FnMut(bool) + 'static, ) -> ListRow
Self::checkbox published as the row’s view action check: a
press on the box, Space on the focused row, a screen reader’s toggle,
a script’s and an agent’s all reach on_toggle through the same
action. The row’s control is id (Self::new).
pub fn leading_column(self, width: f64) -> ListRow
pub fn leading_column(self, width: f64) -> ListRow
See ListRowFace::leading_column. A crate::widget::Section
equalises the badge column of consecutive rows on its own.
pub fn nested(self) -> ListRow
pub fn nested(self) -> ListRow
See ListRowFace::nested.
pub fn depth(self, depth: u32) -> ListRow
pub fn depth(self, depth: u32) -> ListRow
See ListRowFace::depth.
pub fn badge_column(self, badges: Rc<[String]>) -> ListRow
pub fn badge_column(self, badges: Rc<[String]>) -> ListRow
The leading column fits every badge in badges, measured when the
row is laid out: the rows of a
VirtualList, which
mounts only those on screen, keep one title edge with the rest.
pub fn tooltip(self, tooltip: impl Into<String>) -> ListRow
pub fn tooltip(self, tooltip: impl Into<String>) -> ListRow
What the pointer resting on the row shows, where no part of it (the leading badge, an action, a title cut short) says more.
pub fn description(self, description: impl Into<String>) -> ListRow
pub fn description(self, description: impl Into<String>) -> ListRow
What a reader hears of the row beyond its name and value — a task’s status beside its reference, say. It stays out of the pointer’s way: the row explains itself to a reader, not on hover.
pub fn active(self) -> ListRow
pub fn warning(self) -> ListRow
pub fn error(self) -> ListRow
pub fn idle(self) -> ListRow
pub fn struck(self) -> ListRow
pub fn struck(self) -> ListRow
The row stands for a removed item: its title struck through (ListRowFace::struck).
pub fn quiet(self) -> ListRow
pub fn quiet(self) -> ListRow
The row reads as subordinate to the rows around it: its title in the weaker ink
(ListRowFace::quiet).
pub fn change(
self,
identity: impl Into<String>,
name: impl Into<String>,
spoken: impl Into<String>,
said: impl Into<String>,
show: Option<Box<dyn FnMut()>>,
) -> ListRow
pub fn change( self, identity: impl Into<String>, name: impl Into<String>, spoken: impl Into<String>, said: impl Into<String>, show: Option<Box<dyn FnMut()>>, ) -> ListRow
A change identity (called name) made to what the row shows and the person has not
seen: their face on the trailing edge and their colour faintly under the row, at its own
height, and said as a line under the row’s title; spoken (who, in which run) on hover
and to assistive technology; pressing the face runs show.
pub fn shown_change(&self) -> Option<ShownChange<'_>>
pub fn shown_change(&self) -> Option<ShownChange<'_>>
The change the row shows, while the person has not seen it: who made it, what they are called and what they did, as the row draws them.
pub fn presence(self, identity: impl Into<String>) -> ListRow
pub fn presence(self, identity: impl Into<String>) -> ListRow
The presence dot of the person identity.
pub fn disclosure(self) -> ListRow
pub fn checked(self, checked: bool) -> ListRow
pub fn checked(self, checked: bool) -> ListRow
See ListRowFace::checked.
pub fn set_checked(&mut self, checked: bool)
pub fn set_checked(&mut self, checked: bool)
Move the check of a single-choice list.
pub fn emphasized(self, emphasized: bool) -> ListRow
pub fn selected(self, selected: bool) -> ListRow
pub fn with_enabled(self, enabled: bool) -> ListRow
pub fn with_enabled(self, enabled: bool) -> ListRow
A disabled row is dimmed, skipped by focus and inert.
pub fn set_enabled(&mut self, enabled: bool)
pub fn trailing(self, control: Box<dyn Widget>) -> ListRow
pub fn trailing(self, control: Box<dyn Widget>) -> ListRow
One persistent control at the trailing edge: a Toggle, a
Button, a ToggleGroup, a small ProgressRing or a
Badge. The row reserves its width, keeps it reachable by keyboard
and assistive technology, and moves it under the text when the row is
too narrow for both.
pub fn trailing_disclosure(self, button: Box<dyn Widget>) -> ListRow
pub fn trailing_disclosure(self, button: Box<dyn Widget>) -> ListRow
Self::trailing for an icon button that opens what the row is
about while the row itself does something else (a network row that
connects, its chevron opening the network’s page). The button is
centred on the column a Self::disclosure chevron stands in, so it
lines up with the chevrons of the rows around it; its target keeps
its own size, reaching into the row’s bleed.
pub fn tag_labels(&self) -> Vec<&str>
pub fn tag_labels(&self) -> Vec<&str>
The row’s marks after its title (a status, a role), in order.
pub fn trailing_wrapped(&self) -> bool
pub fn trailing_wrapped(&self) -> bool
Whether the trailing control sits under the text (the row is narrow).
pub fn action(
self,
icon: Icon,
label: impl Into<String>,
on_activate: impl FnMut() + 'static,
) -> ListRow
pub fn action( self, icon: Icon, label: impl Into<String>, on_activate: impl FnMut() + 'static, ) -> ListRow
Add an action revealed while the row is hovered or focused.
pub fn action_binding(
self,
icon: Icon,
label: impl Into<String>,
binding: ActionBinding<()>,
) -> ListRow
pub fn action_binding( self, icon: Icon, label: impl Into<String>, binding: ActionBinding<()>, ) -> ListRow
Self::action through an exported resource action: the host
resolves its policy (and asks for confirmation where it must) before
it runs, and the action shows only while it is available.
pub fn swipe_action(
self,
icon: Icon,
label: impl Into<String>,
destructive: bool,
on_activate: impl FnMut() + 'static,
) -> ListRow
pub fn swipe_action( self, icon: Icon, label: impl Into<String>, destructive: bool, on_activate: impl FnMut() + 'static, ) -> ListRow
Swiping the row toward its leading edge reveals icon; releasing
past the threshold runs on_activate.
pub fn swipe_binding(
self,
icon: Icon,
label: impl Into<String>,
destructive: bool,
binding: ActionBinding<()>,
) -> ListRow
pub fn swipe_binding( self, icon: Icon, label: impl Into<String>, destructive: bool, binding: ActionBinding<()>, ) -> ListRow
Swiping the row toward its leading edge reveals icon; releasing past the threshold runs
binding as its action, as Self::action_binding runs a trailing action.
pub fn on_activate(self, f: impl FnMut() + 'static) -> ListRow
pub fn on_activate(self, f: impl FnMut() + 'static) -> ListRow
Run f when the row is activated.
pub fn on_action(self, binding: ActionBinding<()>) -> ListRow
pub fn on_action(self, binding: ActionBinding<()>) -> ListRow
Route activation through an exported resource action.
pub fn on_effect(self, f: impl FnMut() + 'static) -> ListRow
pub fn on_effect(self, f: impl FnMut() + 'static) -> ListRow
Publish activation as a zero-argument effect, as
Button::on_effect does: the
closure keeps working and the row is discoverable and agent-driveable.
pub fn on_view(self, f: impl FnMut() + 'static) -> ListRow
pub fn on_view(self, f: impl FnMut() + 'static) -> ListRow
Publish activation as a transient view action (opening, selecting), as
Button::on_view does.
pub fn set_selected(&mut self, selected: bool)
pub fn is_selected(&self) -> bool
§impl ListRow
impl ListRow
pub fn icon(self, icon: Icon) -> ListRow
pub fn badge(self, badge: impl Into<String>) -> ListRow
pub fn badge(self, badge: impl Into<String>) -> ListRow
See RowLeading::Badge.
pub fn leading_tooltip(self, tooltip: impl Into<String>) -> ListRow
pub fn leading_tooltip(self, tooltip: impl Into<String>) -> ListRow
What the leading badge or icon stands for (“Retrieves the resource”
for GET, “SSH” for a terminal glyph): the tooltip when the pointer
rests on it, and the row’s accessible description.
pub fn media(self, source: MediaSource, aspect: MediaAspect) -> ListRow
pub fn media(self, source: MediaSource, aspect: MediaAspect) -> ListRow
See RowLeading::Media: art from source at aspect, the
placeholder with the title’s initials until it loads.
pub fn checkbox(
self,
checked: bool,
on_toggle: impl FnMut(bool) + 'static,
) -> ListRow
pub fn checkbox( self, checked: bool, on_toggle: impl FnMut(bool) + 'static, ) -> ListRow
See RowLeading::Checkbox: a selection checkbox. Pressing
it (or Space on the focused row) runs on_toggle with the new state.
pub fn checkbox_with_icon(
self,
checked: bool,
icon: Icon,
on_toggle: impl FnMut(bool) + 'static,
) -> ListRow
pub fn checkbox_with_icon( self, checked: bool, icon: Icon, on_toggle: impl FnMut(bool) + 'static, ) -> ListRow
Self::checkbox with a glyph after the box: a task checks off and still says how
important it is. The glyph takes no press: it is what the row is, not a control.
pub fn swatch(self, colour: AlphaColor<Srgb>) -> ListRow
pub fn swatch(self, colour: AlphaColor<Srgb>) -> ListRow
See RowLeading::Swatch.
pub fn signal(self, level: SignalLevel) -> ListRow
pub fn signal(self, level: SignalLevel) -> ListRow
See RowLeading::Signal: the row leads with how strong its
signal is, and is described by the meter’s name (“Strong signal”)
unless a tooltip already says more.
§impl ListRow
impl ListRow
pub fn avatar_colour(self, colour: AlphaColor<Srgb>) -> ListRow
pub fn avatar_colour(self, colour: AlphaColor<Srgb>) -> ListRow
The colour the leading avatar is drawn in: its own presence colour, for an agent whose keeper chose one, rather than the colour its identity derives.
§impl ListRow
impl ListRow
pub fn with_swipe(self, props: SwipeActionProps) -> ListRow
pub fn with_swipe(self, props: SwipeActionProps) -> ListRow
The row with props as what swiping it across does.
Trait Implementations§
Source§impl ActionControl<()> for ListRow
impl ActionControl<()> for ListRow
Source§fn bind_action(self, binding: ActionBinding<()>) -> Self
fn bind_action(self, binding: ActionBinding<()>) -> Self
binding with the control’s committed value.§impl ActionControls for ListRow
impl ActionControls for ListRow
§fn install_control_custody(
&mut self,
domain: &ControlDomain,
attachment: CustodyAttachment,
)
fn install_control_custody( &mut self, domain: &ControlDomain, attachment: CustodyAttachment, )
§fn take_control_invocation(&mut self) -> Option<ControlInvocation>
fn take_control_invocation(&mut self) -> Option<ControlInvocation>
§fn control_action_bindings(&self) -> Vec<ControlBindingMetadata>
fn control_action_bindings(&self) -> Vec<ControlBindingMetadata>
metadata
to its descendants’ inventory.§fn refresh_control_action_availability(
&mut self,
allowed: &HashSet<ActionAddress>,
)
fn refresh_control_action_availability( &mut self, allowed: &HashSet<ActionAddress>, )
§fn take_attributed_control_invocation(
&mut self,
) -> Option<(ControlInvocation, Option<InvocationId>)>
fn take_attributed_control_invocation( &mut self, ) -> Option<(ControlInvocation, Option<InvocationId>)>
Self::take_control_invocation, with the effect invocation the
intent continues when an effect’s handler or completion queued it:
the host applies it for that invocation’s invoker.§fn on_control_invocation_result(
&mut self,
address: &ActionAddress,
result: &Result<ResourceOperationStart, DoorError>,
)
fn on_control_invocation_result( &mut self, address: &ActionAddress, result: &Result<ResourceOperationStart, DoorError>, )
Accepted means queued, not completed; confirmation remains an error
while the host offers its normal confirmation UI. This notification
grants no document authority and must not retry the invocation itself.§fn action_control_bindings(&self) -> Vec<ControlBindingMetadata>
fn action_control_bindings(&self) -> Vec<ControlBindingMetadata>
§fn has_action_control_bindings(&self) -> bool
fn has_action_control_bindings(&self) -> bool
control_action_bindings
contains an Action, including the same modal child exposure,
regardless of current availability.§fn has_pending_control_invocation(&self) -> bool
fn has_pending_control_invocation(&self) -> bool
§impl CardBody for ListRow
impl CardBody for ListRow
§fn show_as_card(&mut self, selected: bool, activate: Event)
fn show_as_card(&mut self, selected: bool, activate: Event)
CARD_TITLE_LINES
lines, its facts on a line under the title, and a press reporting activate — and
selection, where it is the selected one.§impl Described for ListRow
impl Described for ListRow
§fn set_props(&mut self, props: ListRowProps) -> bool
fn set_props(&mut self, props: ListRowProps) -> bool
The texts, marks and selection change in place; a row whose leading column or trailing control changes shape is built again.
type Props = ListRowProps
§fn from_props(key: &str, props: ListRowProps) -> ListRow
fn from_props(key: &str, props: ListRowProps) -> ListRow
props, with key its stable id.§fn slot_views(&mut self, slot: &str) -> Option<&mut dyn SlotViews>
fn slot_views(&mut self, slot: &str) -> Option<&mut dyn SlotViews>
slot, to change by key in place: None when a change of what
the slot holds builds the widget again.§fn part_views(
&mut self,
slot: &str,
key: &str,
of: &str,
) -> Option<&mut dyn SlotViews>
fn part_views( &mut self, slot: &str, key: &str, of: &str, ) -> Option<&mut dyn SlotViews>
slot holds for the part key — a part being a component the slot
takes, whose props the widget reads — in that part’s own view slot of, to change them
by key where they stand. None when a change inside a part builds the widget again.§impl PublishesResources for ListRow
impl PublishesResources for ListRow
§fn resources(&self, _doc: &AutoCommit) -> Vec<ResourceSpec>
fn resources(&self, _doc: &AutoCommit) -> Vec<ResourceSpec>
doc lets
a provider enumerate resources living in the document.§fn caller_view_resources(&self, _doc: &AutoCommit) -> Vec<ResourceSpec>
fn caller_view_resources(&self, _doc: &AutoCommit) -> Vec<ResourceSpec>
§fn action_directory_resource_page(
&self,
_doc: &AutoCommit,
_cursor: &[u8],
_max_results: usize,
) -> Option<ActionDirectoryResourcePage>
fn action_directory_resource_page( &self, _doc: &AutoCommit, _cursor: &[u8], _max_results: usize, ) -> Option<ActionDirectoryResourcePage>
max_results is a hard ceiling; a live
provider must return a non-empty opaque cursor when it has a tail.
None is the default: an unbounded contextual Self::resources
snapshot must not be reached from a remote query or revision.§fn action_directory_revision(&self, _doc: &AutoCommit) -> Option<String>
fn action_directory_revision(&self, _doc: &AutoCommit) -> Option<String>
None when this
widget has no independently mutable remote directory state.§fn action_directory_invocation_domain(
&self,
_doc: &AutoCommit,
) -> ActionDirectoryInvocationDomain
fn action_directory_invocation_domain( &self, _doc: &AutoCommit, ) -> ActionDirectoryInvocationDomain
§fn resource(&self, _doc: &AutoCommit, _id: &str) -> Option<ResourceSpec>
fn resource(&self, _doc: &AutoCommit, _id: &str) -> Option<ResourceSpec>
§fn resource_pending(&self, _id: &str) -> bool
fn resource_pending(&self, _id: &str) -> bool
id, which resolves to nothing now, may resolve once what
the widget is reading off the UI thread lands (a row of a list not
read yet). A caller resolving it is answered then, never kept waiting
on a blocking read nor told it is unknown before the read ends.§fn resources_for(
&self,
participant: Option<&ParticipantId>,
doc: &AutoCommit,
) -> Vec<ResourceSpec>
fn resources_for( &self, participant: Option<&ParticipantId>, doc: &AutoCommit, ) -> Vec<ResourceSpec>
None is this widget’s own view.
Multi-participant widgets override this and Self::resource_for,
and never put one participant’s selection into another’s tree.Self::resources_for as a SharedResource forest whose
unchanged subtrees are the very nodes of the last one, so consumers
skip what they have seen. None, the default, has callers
wrap Self::resources_for. An answer must equal it exactly once
materialised (SharedResource::to_resource).§fn resource_for(
&self,
participant: Option<&ParticipantId>,
doc: &AutoCommit,
id: &str,
) -> Option<ResourceSpec>
fn resource_for( &self, participant: Option<&ParticipantId>, doc: &AutoCommit, id: &str, ) -> Option<ResourceSpec>
Self::resource in participant’s tree.§fn action_directory_visibility(
&self,
_doc: &AutoCommit,
_resource_id: &str,
) -> Option<ActionAddress>
fn action_directory_visibility( &self, _doc: &AutoCommit, _resource_id: &str, ) -> Option<ActionAddress>
None means its label and hierarchy are
not remotely discoverable unless the resource itself has a safe view
action.§fn document_action_result(
&self,
_doc: &AutoCommit,
_address: &ActionAddress,
_changes: &[Patch],
) -> Option<Value>
fn document_action_result( &self, _doc: &AutoCommit, _address: &ActionAddress, _changes: &[Patch], ) -> Option<Value>
address, which has just applied to
doc as changes: a compact summary of what it produced, so its
caller needs no second read to see what happened. Asked only for an
action whose contract declares a JSON result, which this value must
satisfy.§impl ReservedShape for ListRow
impl ReservedShape for ListRow
fn reserved_shape(&self) -> SkeletonShape
§impl ResourceOperations for ListRow
impl ResourceOperations for ListRow
§fn resource_operation_handlers(&self) -> HashSet<String>
fn resource_operation_handlers(&self) -> HashSet<String>
§fn start_operation(
&mut self,
op: &ResourceOperation<'_>,
doc: &mut Edits<'_>,
path: &ExId,
) -> Result<Option<ResourceOperationStart>, String>
fn start_operation( &mut self, op: &ResourceOperation<'_>, doc: &mut Edits<'_>, path: &ExId, ) -> Result<Option<ResourceOperationStart>, String>
§fn local_resource_operation_handlers(&self) -> &'static [&'static str]
fn local_resource_operation_handlers(&self) -> &'static [&'static str]
§fn poll_resource_operation(
&mut self,
invocation: InvocationId,
cancellation_requested: bool,
doc: &AutoCommit,
path: &ExId,
) -> Option<InvocationUpdate>
fn poll_resource_operation( &mut self, invocation: InvocationId, cancellation_requested: bool, doc: &AutoCommit, path: &ExId, ) -> Option<InvocationUpdate>
§impl RowActionRects for ListRow
impl RowActionRects for ListRow
§fn row_action_rects(&self) -> Vec<Rect>
fn row_action_rects(&self) -> Vec<Rect>
§impl RowSelectionSink for ListRow
impl RowSelectionSink for ListRow
§fn take_selection(&mut self, selection: RowSelection)
fn take_selection(&mut self, selection: RowSelection)
§impl Widget for ListRow
impl Widget for ListRow
§fn perform_action(
&mut self,
action: &Action,
key_path: &[u64],
_state: &mut Edits<'_>,
_path: &(dyn Any + 'static),
) -> bool
fn perform_action( &mut self, action: &Action, key_path: &[u64], _state: &mut Edits<'_>, _path: &(dyn Any + 'static), ) -> bool
An action on the row itself, or on one of its action buttons (its children in the accessibility tree, by position).
§fn needs_animation_frame(&self) -> bool
fn needs_animation_frame(&self) -> bool
Frames only while its leading checkbox is on its way.
§fn perform_semantic_action(
&mut self,
target: &str,
action: &Action,
state: &mut Edits<'_>,
path: &(dyn Any + 'static),
) -> bool
fn perform_semantic_action( &mut self, target: &str, action: &Action, state: &mut Edits<'_>, path: &(dyn Any + 'static), ) -> bool
Run the action a button child of the row’s node was addressed by.
§fn provide<'a>(&'a self, request: &mut Request<'a, '_>)
fn provide<'a>(&'a self, request: &mut Request<'a, '_>)
capability). Declare capabilities with crate::provides!.§fn provide_mut<'a>(&'a mut self, request: &mut RequestMut<'a, '_>)
fn provide_mut<'a>(&'a mut self, request: &mut RequestMut<'a, '_>)
Widget::provide.§fn set_interaction_environment(&mut self, environment: InteractionEnvironment)
fn set_interaction_environment(&mut self, environment: InteractionEnvironment)
§fn sync(&mut self, state: &(dyn Any + 'static), path: &(dyn Any + 'static))
fn sync(&mut self, state: &(dyn Any + 'static), path: &(dyn Any + 'static))
Widget::children_mut returns; a widget overrides it only to
read state of its own, or to sync children it does not expose there.§fn update(
&mut self,
state: &(dyn Any + 'static),
path: &(dyn Any + 'static),
) -> bool
fn update( &mut self, state: &(dyn Any + 'static), path: &(dyn Any + 'static), ) -> bool
Widget::children_mut returns without short-circuiting, so a container never freezes its
descendants; an override checks state of its own and forwards.fn build_layout( &mut self, taffy: &mut TaffyTree, theme: &Theme, node_map: &mut HashMap<NodeId, *mut dyn Widget>, ) -> NodeId
§fn adjust_layout_style(
&mut self,
taffy: &mut TaffyTree,
node: NodeId,
text: &mut TextRenderer,
) -> bool
fn adjust_layout_style( &mut self, taffy: &mut TaffyTree, node: NodeId, text: &mut TextRenderer, ) -> bool
fn measure( &mut self, known: Size<Option<f32>>, available: Size<AvailableSpace>, text_renderer: &mut TextRenderer, ) -> Size<f32>
§fn layout_info(&self) -> Option<LayoutInfo>
fn layout_info(&self) -> Option<LayoutInfo>
None means the widget has no such policy; ordinary manual widgets remain
valid. Values are available after build/settlement and carry real origins.§fn apply_layout(&mut self, taffy: &TaffyTree, node: NodeId, origin: Point)
fn apply_layout(&mut self, taffy: &TaffyTree, node: NodeId, origin: Point)
§fn draw(
&mut self,
scene: &mut Scene,
transform: Affine,
text_renderer: &mut TextRenderer,
theme: &Theme,
presence: &PresenceCtx,
)
fn draw( &mut self, scene: &mut Scene, transform: Affine, text_renderer: &mut TextRenderer, theme: &Theme, presence: &PresenceCtx, )
scene. The default paints nothing.§fn handle_event(&mut self, event: &WindowEvent, ctx: &mut EventCtx<'_>)
fn handle_event(&mut self, event: &WindowEvent, ctx: &mut EventCtx<'_>)
§fn cursor_shape(&self, point: Point) -> Option<CursorIcon>
fn cursor_shape(&self, point: Point) -> Option<CursorIcon>
point is logical coords, same space as Widget::get_rect;
None defers to the default arrow. The host hit-tests the whole
tree via node_map and picks the smallest-area claim, so containers
need not override this.fn tooltip_target_at(&self, point: Point) -> Option<(Rect, String)>
fn is_focusable(&self) -> bool
fn set_focus(&mut self, focused: bool)
fn is_focused(&self) -> bool
§fn is_enabled(&self) -> bool
fn is_enabled(&self) -> bool
false) widget is excluded from focus traversal, must
reject input in handle_event, and renders dimmed (see
DISABLED_ALPHA).§fn needs_redraw(&self) -> bool
fn needs_redraw(&self) -> bool
false (clean). A widget is clean until something it reads
changes: a leaf that keeps state says so by tracking a dirty: bool
(set in handle_event/sync, cleared in mark_drawn()), and one
that paints from the people on the document reads the frame’s
presence (crate::presence::frame::frame). Containers MUST
forward: dirty iff any descendant is.§fn mark_drawn(&mut self)
fn mark_drawn(&mut self)
dirty flag. Default forwards to children.§fn is_layout_dirty(&self) -> bool
fn is_layout_dirty(&self) -> bool
true; widgets with a fixed intrinsic size should override
to false unless a size-affecting mutation landed. Containers MUST
forward: layout-dirty iff any descendant is.§fn accessibility_child_description(&self, child_index: usize) -> Option<String>
fn accessibility_child_description(&self, child_index: usize) -> Option<String>
children entry to
assistive technology, when this widget holds the words for it: a
row’s secondary line is its trailing switch’s description. The
bridge sets it as that child’s node’s description unless the child
describes itself.fn children(&self) -> Vec<&dyn Widget>
fn children_mut(&mut self) -> Vec<&mut dyn Widget>
fn wants_pointer_capture(&self) -> bool
fn name(&self) -> &'static str
§fn test_id(&self) -> Option<&str>
fn test_id(&self) -> Option<&str>
None falls back to a path-based
key. Must be unique across the live tree — the registry resolves on
first match, so a duplicate shadows the second occurrence.§fn get_rect(&self) -> Rect
fn get_rect(&self) -> Rect
§fn as_any(&self) -> Option<&(dyn Any + 'static)>
fn as_any(&self) -> Option<&(dyn Any + 'static)>
dyn Widget. Default None (a widget may borrow
and so not be 'static); a widget opts in with Some(self), and a
Decorator answers itself.fn as_any_mut(&mut self) -> Option<&mut (dyn Any + 'static)>
§fn accessibility(&self) -> Option<AccessNode>
fn accessibility(&self) -> Option<AccessNode>
AccessState. Default None means
presentational: the node is skipped and children reparent onto the
parent. State must be derived, not stored so it can’t drift from
draw; names must already be i18n!-resolved.§fn native_input_snapshot(
&self,
_state: &(dyn Any + 'static),
_path: &(dyn Any + 'static),
) -> Option<Value>
fn native_input_snapshot( &self, _state: &(dyn Any + 'static), _path: &(dyn Any + 'static), ) -> Option<Value>
§fn view_only_scroll(&self, _event: &WindowEvent) -> bool
fn view_only_scroll(&self, _event: &WindowEvent) -> bool
sync. The runner still lays out, paints and refreshes accessibility
geometry; unknown handlers stay on the full path.§fn primary_vertical_scroll(&self) -> Option<PrimaryScrollRegion>
fn primary_vertical_scroll(&self) -> Option<PrimaryScrollRegion>
fn apply_primary_vertical_scroll( &mut self, _action: PrimaryScrollAction, ) -> PrimaryScrollResult
§fn callback_binding(&self) -> Option<CallbackBinding>
fn callback_binding(&self) -> Option<CallbackBinding>
§fn has_separate_document_owner(&self) -> bool
fn has_separate_document_owner(&self) -> bool
§fn history_owner(&self) -> Option<HistoryOwner>
fn history_owner(&self) -> Option<HistoryOwner>
§fn record_owners(&self) -> Vec<HistoryOwner>
fn record_owners(&self) -> Vec<HistoryOwner>
crate::record::person). They take no part in this
widget’s history or controls.§fn mount_native_views(&mut self, host: &NativeViewHost<'_>)
fn mount_native_views(&mut self, host: &NativeViewHost<'_>)
§fn unmount_native_views(&mut self)
fn unmount_native_views(&mut self)
§fn native_view_frame_start(&mut self)
fn native_view_frame_start(&mut self)
§fn set_platform_conventions(&mut self, conventions: PlatformConventions)
fn set_platform_conventions(&mut self, conventions: PlatformConventions)
§fn set_window_bar_control(&mut self, in_bar: bool)
fn set_window_bar_control(&mut self, in_bar: bool)
§fn settle(&mut self, edits: &mut Edits<'_>, path: &ExId)
fn settle(&mut self, edits: &mut Edits<'_>, path: &ExId)
edits;
the host syncs again when the document changed. The default settles the returned children.§fn observe_physical_input(&mut self, _input: PhysicalInput)
fn observe_physical_input(&mut self, _input: PhysicalInput)
§fn for_each_child(&self, visitor: &mut dyn FnMut(&dyn Widget))
fn for_each_child(&self, visitor: &mut dyn FnMut(&dyn Widget))
Self::children; toolkit
containers override this to walk their retained storage directly.§fn for_each_child_in_clip(&self, visitor: &mut dyn FnMut(&dyn Widget))
fn for_each_child_in_clip(&self, visitor: &mut dyn FnMut(&dyn Widget))
Self::for_each_child that may paint inside the layout_clip in
effect: what a scroll view’s damage and copy plan need. Every child by default; a long
column visits only those near the clip, so a frame costs what is shown, not what the column
holds.§fn for_each_hosted_child(&self, _visitor: &mut dyn FnMut(&dyn Widget))
fn for_each_hosted_child(&self, _visitor: &mut dyn FnMut(&dyn Widget))
Self::children lists, so what is walked
there keeps the paths, sibling indices and registry entries it had.§fn for_each_layout_child(&self, _visitor: &mut dyn FnMut(&dyn Widget)) -> bool
fn for_each_layout_child(&self, _visitor: &mut dyn FnMut(&dyn Widget)) -> bool
Self::build_layout gives a layout node,
also those Self::for_each_child keeps from routing (a hidden
pane, a title, a spacer). A retained layout is checked against this
walk before it is called through again, so a widget that replaced a
child without reporting it gets a new layout instead of a call into
freed memory. A child missing here cannot be checked, so debug builds
stop on it. A wrapper that stands for its inner widget’s node visits
the inner widget itself. Read more§fn window_slot(&self, _id: String) -> Option<ToolbarAction>
fn window_slot(&self, _id: String) -> Option<ToolbarAction>
id
(crate::window_toolbar::ToolbarAction): a button’s icon and name.
None for anything that is not a button.§fn stands_for(&self, address: *const ()) -> bool
fn stands_for(&self, address: *const ()) -> bool
address, or stands in the tree
for it: a Decorator stands for every widget it wraps, so a
scroller drawn inside one is found where the decorator is
(crate::scroll_copy::offer).§fn focus_reveal_context(&self) -> Option<Rect>
fn focus_reveal_context(&self) -> Option<Rect>
§fn reveal_descendant(&mut self, target: *const dyn Widget) -> bool
fn reveal_descendant(&mut self, target: *const dyn Widget) -> bool
§fn test_rects(&self) -> Vec<(String, Rect)>
fn test_rects(&self) -> Vec<(String, Rect)>
Widget::get_rect; zero-area entries are dropped.§fn child_clip_rect(&self) -> Option<Rect>
fn child_clip_rect(&self) -> Option<Rect>
§fn snap_points(&self, axis: ScrollAxis, out: &mut Vec<f32>)
fn snap_points(&self, axis: ScrollAxis, out: &mut Vec<f32>)
axis that this widget, as a scroll view’s content,
offers it to settle on, measured from its own leading edge: a board’s
lanes (crate::widget::Board). None leaves a scroller stopping
wherever the hand left it.§fn take_action_palette_request(&mut self) -> Option<ActionAddress>
fn take_action_palette_request(&mut self) -> Option<ActionAddress>
resources().§fn take_search_request(&mut self) -> bool
fn take_search_request(&mut self) -> bool
§fn claims_raw_touch(&self, _point: Point) -> bool
fn claims_raw_touch(&self, _point: Point) -> bool
point (logical coords, same space as Widget::get_rect). Read more§fn touch_claim(&self, _point: Point) -> TouchClaim
fn touch_claim(&self, _point: Point) -> TouchClaim
point (logical coords)
means here, when a drag moves something rather than scrolling. Read more§fn tooltip(&self) -> Option<&str>
fn tooltip(&self) -> Option<&str>
crate::widget::tooltip::TooltipHost),
hit-tested like cursor_shape so containers
need not forward it. An icon-only control should also use this as
its accessible name.§fn tooltip_side(&self) -> TooltipSide
fn tooltip_side(&self) -> TooltipSide
§fn is_default_keyboard_focus(&self) -> bool
fn is_default_keyboard_focus(&self) -> bool
§fn keyboard_input_scope(&self) -> Option<u64>
fn keyboard_input_scope(&self) -> Option<u64>
§fn set_full_bleed(&mut self, _full_bleed: bool)
fn set_full_bleed(&mut self, _full_bleed: bool)
§fn set_invalid(&mut self, _invalid: bool)
fn set_invalid(&mut self, _invalid: bool)
Field::with_error: an invalid control edges itself in danger ink
and reports invalid to assistive technology. Controls without a
field face ignore it.§fn focus_requested(&mut self, target: Option<NodeId>, tree: &TaffyTree)
fn focus_requested(&mut self, target: Option<NodeId>, tree: &TaffyTree)
None leaves the menu to stand under
the focused widget’s own box.§fn wants_tab_input(&self) -> bool
fn wants_tab_input(&self) -> bool
§fn ime_cursor_rect(&self) -> Option<Rect>
fn ime_cursor_rect(&self) -> Option<Rect>
Some enables IME for the focused widget and
positions its candidate window; non-text controls keep the default
None and therefore disable IME.§fn traps_focus(&self) -> bool
fn traps_focus(&self) -> bool
true, the host restricts Tab/directional
focus to this subtree (wrapping at the ends) and restores the prior
focus once it goes back to false. Default false.§fn scopes_keyboard_focus(&self) -> bool
fn scopes_keyboard_focus(&self) -> bool
Self::traps_focus it moves no focus when it starts or ends, and
pointer input is unaffected. Default false.§fn take_app_activation(&mut self) -> Option<u64>
fn take_app_activation(&mut self) -> Option<u64>
§fn take_focus_request(&mut self) -> Option<String>
fn take_focus_request(&mut self) -> Option<String>
Self::accessibility with its synthetic children shared, for a
widget that keeps them between frames: each child it did not change
is handed over as the very Arc of the last frame, which the
semantic tree takes as unchanged without copying or comparing it. Read moreSelf::accessibility reports this subtree hidden, for a
host that asks it of every node to prune focus traversal. Widgets
whose node is costly to build (text values, per-block children, a
translated name) answer without building it: the focus walk asks
every widget in the window on every recomputation. Any override must
agree with accessibility(); debug builds check it in the walk.§fn accessibility_root(&self) -> Option<AccessNode>
fn accessibility_root(&self) -> Option<AccessNode>
Self::accessibility’s own node with its children left empty:
its role, identity (semantic_key) and state. Focus capture and focus
order read only these, for every node on every frame, so a widget
whose node carries a large subtree (a document exporting its every
block) answers without building it. An override must equal
accessibility() with children cleared.§fn synthetic_accessibility_rect(&self, _path: &[usize]) -> Option<Rect>
fn synthetic_accessibility_rect(&self, _path: &[usize]) -> Option<Rect>
AccessNode::children. The path is
its child-index path beneath this widget’s accessibility node. Returning
a rect lets AccessKit activation inject the same click as pointer input.§fn focus_synthetic_accessibility(&mut self, _path: &[usize]) -> bool
fn focus_synthetic_accessibility(&mut self, _path: &[usize]) -> bool
§fn accessibility_child_parent(&self, _child_index: usize) -> Option<usize>
fn accessibility_child_parent(&self, _child_index: usize) -> Option<usize>
children entry beneath a
synthetic child returned by accessibility.
The returned index addresses AccessNode::children for this frame.
Collections use this to place a real interactive row delegate inside
its virtual ListItem/TreeItem instead of exporting a duplicate.§fn accessibility_child_path(&self, child_index: usize) -> Option<Vec<usize>>
fn accessibility_child_path(&self, child_index: usize) -> Option<Vec<usize>>
children entry beneath a
nested path of synthetic children returned by
accessibility. Read more§fn accessibility_represents_child(&self, _child_index: usize) -> bool
fn accessibility_represents_child(&self, _child_index: usize) -> bool
children entry is already
represented in this widget’s own synthetic
accessibility tree, so the bridge must not
export it a second time. A host that publishes a child’s semantics
itself (to add its own controls inside the same dialog) answers true
for that child; assistive technology then sees one copy, not two.§fn lays_out_child(&self, _child_index: usize) -> bool
fn lays_out_child(&self, _child_index: usize) -> bool
§fn ime_requires_deferred_ack(&self) -> bool
fn ime_requires_deferred_ack(&self) -> bool
§fn ime_refuses_ordinary_commits(&self) -> bool
fn ime_refuses_ordinary_commits(&self) -> bool
§fn start_deferred_text(&mut self) -> Option<Receipt>
fn start_deferred_text(&mut self) -> Option<Receipt>
§fn commit_deferred_text(&mut self, text: &str) -> Option<Receipt>
fn commit_deferred_text(&mut self, text: &str) -> Option<Receipt>
§fn ime_content(&self) -> Option<InputContent>
fn ime_content(&self) -> Option<InputContent>
text-input-v3, native IMEs elsewhere). None is intentionally the
default: enabling an IME for buttons, canvas tools or games makes the
compositor raise an on-screen keyboard over content that cannot accept
the committed text. Read more§fn ime_multiline(&self) -> bool
fn ime_multiline(&self) -> bool
§fn ime_edit_fingerprint(&self, key: &[u8; 32]) -> Option<[u8; 32]>
fn ime_edit_fingerprint(&self, key: &[u8; 32]) -> Option<[u8; 32]>
§fn presented(&self) -> bool
fn presented(&self) -> bool
true; false only for a widget standing in for a window’s
content whose first frame has not drawn. Must latch: once true,
never false again for the same content.§fn arrives_from(&self) -> Source
fn arrives_from(&self) -> Source
presented: this device (an app starting here),
another device or a host. A frame from this device may hold the
window’s first frame up to one frame budget; any other reserves the
window’s place and says where it comes from after a while.§fn arrival_progress(&self) -> Option<Progress>
fn arrival_progress(&self) -> Option<Progress>
§fn arrival_shape(&self) -> SkeletonShape
fn arrival_shape(&self) -> SkeletonShape
§fn text_review(&self) -> Option<(usize, String)>
fn text_review(&self) -> Option<(usize, String)>
(caret_byte, text), byte offset on a char boundary. The host diffs
this before/after an event so caret-only moves (arrows, Home/End)
get announced, not just typing.§fn on_external_event(
&mut self,
_payload: &str,
_state: &mut Edits<'_>,
_root: &(dyn Any + 'static),
)
fn on_external_event( &mut self, _payload: &str, _state: &mut Edits<'_>, _root: &(dyn Any + 'static), )
crate::app::UserEvent::External (e.g. a worker thread streaming
output into a status log). Default no-op; the App redraws and
re-syncs after dispatch, so mutating state here is enough.crate::gesture::NavGestureRecognizer and delivered to the whole
tree; return true once consumed. Default forwards to children, so
a widget that owns history becomes swipe-navigable for free.Self::on_nav_gesture would consume now. A widget
that owns history overrides this beside on_nav_gesture.§fn take_focus_reset(&mut self) -> bool
fn take_focus_reset(&mut self) -> bool
crate::app::App::autofocus_on_structure_change;
a wizard raises it on step transitions.§fn take_accessibility_request(&mut self) -> Option<AccessibilityRequest>
fn take_accessibility_request(&mut self) -> Option<AccessibilityRequest>
§fn dev_route(&self) -> Option<RouteSnapshot>
fn dev_route(&self) -> Option<RouteSnapshot>
§fn restore_dev_route(&mut self, route: &RouteSnapshot) -> bool
fn restore_dev_route(&mut self, route: &RouteSnapshot) -> bool
route back. Returns whether a router in this subtree accepted it. Read more§fn appearance_intent(&self) -> Option<AppearanceIntent>
fn appearance_intent(&self) -> Option<AppearanceIntent>
crate::app::App::appearance_reconcile — how a settings pane
re-themes the running app live without a back-channel.
Level-triggered; the App recurses Self::children itself, so
containers need not forward it. First Some wins.§fn minimum_window_width(&self) -> Option<f64>
fn minimum_window_width(&self) -> Option<f64>
NavShell answers with one column
at a time). The host states it to the window system, so the desktop
stops a resize there. None: no opinion. The host walks the tree
itself (minimum_window_width), so containers need not forward
it; the first Some wins.§fn preferred_window_size(&self) -> Option<(f64, f64)>
fn preferred_window_size(&self) -> Option<(f64, f64)>
None: the
window is the user’s and the app lays itself out in whatever it gets.§fn set_motion_reduced(&mut self, reduced: bool)
fn set_motion_reduced(&mut self, reduced: bool)
§fn needs_idle_sync(&self) -> bool
fn needs_idle_sync(&self) -> bool
sync still needs to run on idle frames without input or
collab events — e.g. waiting out a document-adoption grace window.§fn disclosing(&self) -> Option<Disclosing>
fn disclosing(&self) -> Option<Disclosing>
motion::Disclosure: an in-window banner arriving or leaving), or a
content-sized container one moves in, how far what follows it is
drawn from where it is laid out. A moving band stands out of the
layout; its container places it (Self::place_disclosing) and
draws the widgets after it lower by transform, so they move with the
band’s edge instead of being laid out again every frame. None at
rest (the default).§fn place_disclosing(&mut self, _slot: Rect)
fn place_disclosing(&mut self, _slot: Rect)
Disclosing::Band) stands while it is
out of the layout: its slot’s top and width (slot’s height is
zero), set by its container after each layout.§fn is_band(&self) -> bool
fn is_band(&self) -> bool
widget::Disclosing). Its column leaves it out of its identity
across rebuilds.§fn note_placement(&mut self, _placement: Placement)
fn note_placement(&mut self, _placement: Placement)
§fn animation_detail(&self) -> Option<String>
fn animation_detail(&self) -> Option<String>
None when it has nothing
to add to its name and geometry.§fn next_wake_deadline(&self) -> Option<Instant>
fn next_wake_deadline(&self) -> Option<Instant>
§fn holds_frame_until(&self, now: Instant) -> Option<Instant>
fn holds_frame_until(&self, now: Instant) -> Option<Instant>
crate::arriving): a local read that has
not answered and is still inside its frame budget. The host keeps
the frame on screen until then, or until the data lands, so the
person never sees the space empty and then filled. Containers
forward (the default does).§fn serve_deadline(&mut self, _now: Instant) -> bool
fn serve_deadline(&mut self, _now: Instant) -> bool
Self::next_wake_deadline) is
due at now: do the work it was for, and say whether anything
changed. The default says it did.§fn modal_capture(&self) -> Option<Rect>
fn modal_capture(&self) -> Option<Rect>
Some(rect) when this subtree holds an open modal, its panel box.
While any widget reports Some, the host suppresses its own global
focus shortcuts and swallows unhandled pointer presses so nothing
behind the modal is clickable. Containers MUST forward (the default
does, via first Some among children).§fn dismiss_presented_modal(&mut self) -> bool
fn dismiss_presented_modal(&mut self) -> bool
§fn presents_modal(&self) -> bool
fn presents_modal(&self) -> bool
Widget::dismiss_presented_modal.§fn take_structure_dirty(&mut self) -> bool
fn take_structure_dirty(&mut self) -> bool
§fn take_structure_change(&mut self) -> StructureChange
fn take_structure_change(&mut self) -> StructureChange
Self::take_structure_dirty, saying whether the frame’s damage can
still describe the rebuild (StructureChange::Described). Reading
clears what take_structure_dirty clears; the two must agree on
whether there is a change. The default is the flag, as
a StructureChange::Rebuild: only a widget that knows every pixel its
change touches lands in its own damage says less, and a container
forwards a child’s StructureChange::Described only by overriding
this.§fn remount_children(&mut self, remount: &mut Remount<'_>) -> bool
fn remount_children(&mut self, remount: &mut Remount<'_>) -> bool
StructureChange::Children this widget or one under it
reported, in the retained layout tree, through remount (see
remount). Returns false when it cannot be
carried out in place: the host then rebuilds its tree, and the change
is carried out by Self::build_layout. A widget reports such a
change until either has carried it out. The default carries out its
children’s.§fn has_pending_visual_work(&self) -> bool
fn has_pending_visual_work(&self) -> bool
§fn has_transient_feedback(&self) -> bool
fn has_transient_feedback(&self) -> bool
§fn collect_damage(&self, regions: &mut Vec<Rect>)
fn collect_damage(&self, regions: &mut Vec<Rect>)
§fn damage_covers_own_box(&self) -> bool
fn damage_covers_own_box(&self) -> bool
Self::collect_damage covers every pixel a relayout changed by
moving or resizing its layout box: a host that repaints where moved
widgets were and are may then leave this widget’s box to it (its
children’s boxes still count). A block editor that grew by a
paragraph says where its blocks were and are; the default does not
claim it.§fn mark_children_drawn(&mut self)
fn mark_children_drawn(&mut self)
§fn release_scene_cache(&mut self)
fn release_scene_cache(&mut self)
§fn composition_follows_allocation(&self) -> bool
fn composition_follows_allocation(&self) -> bool
take_structure_dirty themselves when a new allocation changes what
they show, keep the default: a resize re-solves the retained tree in
place instead of recomposing all of it.§fn layout_needs_measure(&self) -> bool
fn layout_needs_measure(&self) -> bool
layout_dirty frame needs taffy to re-solve sizes
(compute_layout) rather than just reposition already-solved boxes.
Scrollable is the motivating override: it translates its origin
in apply_layout without changing any taffy size, so re-solving on
every scroll frame is pure waste.§fn paint_bounds(&self) -> Rect
fn paint_bounds(&self) -> Rect
draw_child
skips the draw when it misses the viewport. Override for widgets
that paint past their own rect.§fn draw_overlay(
&mut self,
scene: &mut Scene,
transform: Affine,
text_renderer: &mut TextRenderer,
theme: &Theme,
presence: &PresenceCtx,
)
fn draw_overlay( &mut self, scene: &mut Scene, transform: Affine, text_renderer: &mut TextRenderer, theme: &Theme, presence: &PresenceCtx, )
draw
recursion, so anything emitted here composites above every sibling
regardless of tree order — the toolkit’s overlay mechanism for
content that escapes its layout box (an open Dropdown, a
popover). Default recurses children_mut.Auto Trait Implementations§
impl Freeze for ListRow
impl !RefUnwindSafe for ListRow
impl !Send for ListRow
impl !Sync for ListRow
impl Unpin for ListRow
impl UnsafeUnpin for ListRow
impl !UnwindSafe for ListRow
Blanket Implementations§
§impl<T> AsDynWidget for Twhere
T: Widget,
impl<T> AsDynWidget for Twhere
T: Widget,
§fn as_dyn_widget(&self) -> &dyn Widget
fn as_dyn_widget(&self) -> &dyn Widget
§impl<T> AudiencePresentationWidgetExt for T
impl<T> AudiencePresentationWidgetExt for T
fn audience_presentation_request(&self) -> Option<AudiencePresentationRequest>
fn on_audience_presentation_changed(&mut self, active: bool)
fn draw_audience_presentation( &mut self, scene: &mut Scene, transform: Affine, text_renderer: &mut TextRenderer, theme: &Theme, rect: Rect, ) -> bool
fn handle_audience_presentation_event( &mut self, event: &WindowEvent, state: &mut Edits<'_>, path: &ExId, ) -> bool
fn on_audience_presentation_closed(&mut self)
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
§impl<T> CompleteContentWidgetExt for T
impl<T> CompleteContentWidgetExt for T
fn complete_content_size(&self) -> Option<Size>
fn draw_complete_content( &mut self, scene: &mut Scene, bounds: Rect, transform: Affine, text_renderer: &mut TextRenderer, theme: &Theme, presence: &PresenceCtx, ) -> bool
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
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.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.§impl<T> FloatingSurfaceWidgetExt for T
impl<T> FloatingSurfaceWidgetExt for T
fn on_floating_surface_focus_changed(&mut self, id: Option<&str>, focused: bool)
fn on_floating_surface_ime_source_changed(&mut self, id: Option<&str>)
fn on_floating_surface_event_source(&mut self, id: Option<&str>)
fn floating_surface_accessibility(&self, id: &str) -> Option<AccessNode>
fn perform_floating_surface_accessibility_action( &mut self, id: &str, target: &str, action: &Action, state: &mut Edits<'_>, path: &ExId, ) -> bool
fn floating_surface_ime(&self, id: &str) -> Option<(InputContent, Rect)>
fn take_floating_surface_request(&mut self) -> Option<FloatingSurfaceRequest>
fn take_capture_studio_request(&mut self) -> Option<CaptureMode>
fn take_floating_surface_source_updates(&mut self) -> Vec<(String, Rect)>
fn draw_floating_surfaces( &mut self, scene: &mut Scene, transform: Affine, text_renderer: &mut TextRenderer, theme: &Theme, presence: &PresenceCtx, )
fn draw_floating_surface( &mut self, id: &str, scene: &mut Scene, transform: Affine, text_renderer: &mut TextRenderer, theme: &Theme, presence: &PresenceCtx, ) -> bool
fn floating_surface_presentations(&self) -> Vec<FloatingSurfacePresentation>
fn active_floating_surface_ids(&self) -> Vec<String>
fn set_floating_surface_bounds(&mut self, bounds: Rect)
fn on_floating_surface_host_message( &mut self, message: &FloatingSurfaceHostMessage, )
§impl<T> FullscreenWidgetExt for T
impl<T> FullscreenWidgetExt for T
fn fullscreen_intent(&self) -> Option<bool>
fn fullscreen_params(&self) -> FullscreenRequest
fn on_fullscreen_changed(&mut self, active: bool)
Source§impl<W> HostDelivery for W
impl<W> HostDelivery for W
Source§fn start_encoded(
&mut self,
kind: OperationKind,
type_id: &str,
payload: &[u8],
doc: &mut AutoCommit,
path: &ExId,
) -> Result<Option<Effected>, String>
fn start_encoded( &mut self, kind: OperationKind, type_id: &str, payload: &[u8], doc: &mut AutoCommit, path: &ExId, ) -> Result<Option<Effected>, String>
type_id, payload) of kind.Source§fn deliver_control(
&mut self,
kind: OperationKind,
control: &str,
doc: &mut AutoCommit,
path: &ObjId,
) -> Result<Option<Effected>, String>
fn deliver_control( &mut self, kind: OperationKind, control: &str, doc: &mut AutoCommit, path: &ObjId, ) -> Result<Option<Effected>, String>
control (its id,
as its tilo.control: resource names it).§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§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>
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>
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 more