Struct NavList
pub struct NavList { /* private fields */ }Expand description
The navigation list. See the module docs.
Implementations§
pub fn new(sections: Vec<NavSection>) -> NavList
pub fn with_id(self, id: impl Into<String>) -> NavList
pub fn with_id(self, id: impl Into<String>) -> NavList
Give the list a stable id for tests and inspection.
pub fn with_accessible_name(self, name: impl Into<String>) -> NavList
pub fn with_accessible_name(self, name: impl Into<String>) -> NavList
The name the list is announced by (“Mailboxes”, “Settings”).
pub fn selected(self, id: &str) -> NavList
pub fn selected(self, id: &str) -> NavList
Choose id and bring its row into view. Does not report through
Self::on_select.
pub fn bind_selection(self, state: &LocalState<Option<String>>) -> NavList
pub fn bind_selection(self, state: &LocalState<Option<String>>) -> NavList
Keep the chosen destination in state: the list shows what the state
holds (and brings it into view) and writes the person’s choice back.
pub fn follow(
self,
source: impl FnMut() -> Option<(Vec<NavSection>, Option<String>)> + 'static,
) -> NavList
pub fn follow( self, source: impl FnMut() -> Option<(Vec<NavSection>, Option<String>)> + 'static, ) -> NavList
Keep the list in step with app state: source answers the sections
and the chosen destination, read now and at every sync and update. A
choice the person makes shows until the state answers it; a state that
chooses otherwise wins.
pub fn on_select(self, f: impl FnMut(String) + 'static) -> NavList
pub fn on_select(self, f: impl FnMut(String) + 'static) -> NavList
Called with the item id when the person chooses a destination.
pub fn selection_actions(
self,
bindings: impl IntoIterator<Item = (String, ActionBinding<()>)>,
) -> NavList
pub fn selection_actions( self, bindings: impl IntoIterator<Item = (String, ActionBinding<()>)>, ) -> NavList
Bind each destination to its published typed action. Bound rows route
selection through host custody; unbound rows keep on_select behavior.
pub fn item_actions(
self,
actions: Vec<NavAction>,
on_action: impl FnMut(&str, &str) + 'static,
) -> NavList
pub fn item_actions( self, actions: Vec<NavAction>, on_action: impl FnMut(&str, &str) + 'static, ) -> NavList
Actions shown on hover and focus at the trailing edge of every item
that has not opted out (NavItem::without_actions); reported with
the item id and the action id through on_action. An action that
opens the menu asks for the row’s
menu instead.
pub fn on_section_action(self, f: impl FnMut(&str, &str) + 'static) -> NavList
pub fn on_section_action(self, f: impl FnMut(&str, &str) + 'static) -> NavList
Called with the section id and the action id when a section header’s trailing action is pressed.
pub fn on_rename(self, f: impl FnMut(&str, String) + 'static) -> NavList
pub fn on_rename(self, f: impl FnMut(&str, String) + 'static) -> NavList
Called with the item id and the new label when the person renames an editable item (F2 or a double click).
pub fn on_check(self, f: impl FnMut(&str, bool) + 'static) -> NavList
pub fn on_check(self, f: impl FnMut(&str, bool) + 'static) -> NavList
Called with the item id and its new state when the person toggles a
checkable row (NavItem::checked): a click anywhere on it, or
Space or Enter.
pub fn on_expand(self, f: impl FnMut(&str, bool) + 'static) -> NavList
pub fn on_expand(self, f: impl FnMut(&str, bool) + 'static) -> NavList
Called with the item or section id and whether it is now open when the person folds or unfolds it, so the app can keep what was folded.
pub fn on_delete(self, f: impl FnMut(String) + 'static) -> NavList
pub fn on_delete(self, f: impl FnMut(String) + 'static) -> NavList
Called with the focused item’s id when the person presses Delete (never Backspace, which belongs to whatever editor sits beside the list).
Called when the person asks for an item’s menu: a right click or a
long press on its row, the Menu key or Shift+F10 on it, or an item
action that opens the menu. It
receives the item id, the row’s lift (hand it to
ContextMenu::anchor_row so the row stays marked) and where the menu
opens: the pointer, or the bottom-leading corner of the row or the
action.
pub fn on_move(self, f: impl FnMut(&str, NavDrop) + 'static) -> NavList
pub fn on_move(self, f: impl FnMut(&str, NavDrop) + 'static) -> NavList
Let the person drag items: into an item marked
NavItem::drop_target, or before and after items in the same
section. The app moves the item in its own data and hands the list
its new sections (Self::set_sections).
pub fn rail(self) -> NavList
pub fn rail(self) -> NavList
An icon-over-label compact rail (a workspace switcher, a channel rail). Section titles give way to space; counts become a mark; captions wrap to a second line before they elide.
pub fn set_sections(&mut self, sections: Vec<NavSection>)
pub fn set_sections(&mut self, sections: Vec<NavSection>)
Replace the destinations, keeping the selection, expansion and focus of every id that is still there.
pub fn set_selected(&mut self, id: Option<&str>)
pub fn set_selected(&mut self, id: Option<&str>)
Choose id (or nothing) without reporting it, and bring its row
into view (once the list has a viewport, if it has none yet).
pub fn selected_id(&self) -> Option<String>
pub fn selected_id(&self) -> Option<String>
The chosen destination.
pub fn set_expanded(&mut self, id: &str, open: bool)
pub fn set_expanded(&mut self, id: &str, open: bool)
Open or fold item or section id without reporting it.
pub fn is_expanded(&self, id: &str) -> bool
pub fn is_expanded(&self, id: &str) -> bool
Whether item or section id is open.
pub fn row_rect(&self, id: &str) -> Option<Rect>
pub fn row_rect(&self, id: &str) -> Option<Rect>
The painted rect of item id’s row, edge to edge of the list, when
it is in view.
pub fn row_lift_rect(&self, id: &str) -> Option<Rect>
pub fn row_lift_rect(&self, id: &str) -> Option<Rect>
The lift of item id’s row: where its hover and selection paint.
Hand it to ContextMenu::anchor_row so a menu marks the row.
pub fn item_action_rect(&self, id: &str, action: &str) -> Option<Rect>
pub fn item_action_rect(&self, id: &str, action: &str) -> Option<Rect>
Where item action action sits on item id’s row (whether or not
the row is hovered), to open a menu at it with open_anchored.
pub fn stage_drag(&mut self, id: &str, before: &str)
pub fn stage_drag(&mut self, id: &str, before: &str)
Show item id being dragged to just before item before, for a
capture: the row lifts under a resting pointer and the drop line
shows. Nothing moves unless the person releases it. Needs
Self::on_move.
pub fn set_filter(&mut self, query: &str)
pub fn set_filter(&mut self, query: &str)
Narrow the filterable sections to query (an empty query shows
everything). The shell’s filter field calls this; an app with its own
field may too.
pub fn visible_item_ids(&self) -> Vec<String>
pub fn visible_item_ids(&self) -> Vec<String>
Stable item ids in the current expanded and filtered row order. Section headers are omitted. Inspection reads the same rows that the retained navigation tree renders and exposes to accessibility.
Trait Implementations§
§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
fn provide<'a>(&'a self, request: &mut Request<'a, '_>)
fn provide_mut<'a>(&'a mut self, request: &mut RequestMut<'a, '_>)
fn build_layout( &mut self, taffy: &mut TaffyTree, theme: &Theme, node_map: &mut HashMap<NodeId, *mut dyn Widget>, ) -> NodeId
fn sync(&mut self, state: &(dyn Any + 'static), path: &(dyn Any + 'static))
fn update( &mut self, state: &(dyn Any + 'static), path: &(dyn Any + 'static), ) -> bool
fn accessibility(&self) -> Option<AccessNode>
fn name(&self) -> &'static str
fn as_any(&self) -> Option<&(dyn Any + 'static)>
fn as_any_mut(&mut self) -> Option<&mut (dyn Any + 'static)>
§fn take_structure_change(&mut self) -> StructureChange
fn take_structure_change(&mut self) -> StructureChange
Decorator::take_structure_dirty
(which may add flags of its own), so by default it says
super::StructureChange::Rebuild; one that adds no flags forwards
its inner widget’s change by overriding this.§fn view_only_scroll(&self, _event: &WindowEvent) -> bool
fn view_only_scroll(&self, _event: &WindowEvent) -> bool
fn native_input_snapshot( &self, state: &(dyn Any + 'static), path: &(dyn Any + 'static), ) -> Option<Value>
fn callback_binding(&self) -> Option<CallbackBinding>
fn has_separate_document_owner(&self) -> bool
fn history_owner(&self) -> Option<HistoryOwner>
fn record_owners(&self) -> Vec<HistoryOwner>
fn layout_info(&self) -> Option<LayoutInfo>
fn children(&self) -> Vec<&dyn Widget>
fn for_each_child(&self, visitor: &mut dyn FnMut(&dyn Widget))
fn local_resource_operation_handlers(&self) -> &'static [&'static str]
fn resource_operation_handlers(&self) -> HashSet<String>
fn test_id(&self) -> Option<&str>
fn test_rects(&self) -> Vec<(String, Rect)>
fn get_rect(&self) -> Rect
fn paint_bounds(&self) -> Rect
fn child_clip_rect(&self) -> Option<Rect>
fn keeps_undo_step_open(&self) -> bool
fn cursor_shape(&self, point: Point) -> Option<CursorIcon>
fn claims_raw_touch(&self, point: Point) -> bool
fn tooltip(&self) -> Option<&str>
fn tooltip_side(&self) -> TooltipSide
fn tooltip_target_at(&self, point: Point) -> Option<(Rect, String)>
fn is_focusable(&self) -> bool
fn is_focused(&self) -> bool
fn wants_tab_input(&self) -> bool
fn ime_cursor_rect(&self) -> Option<Rect>
fn traps_focus(&self) -> bool
fn synthetic_accessibility_rect(&self, path: &[usize]) -> Option<Rect>
fn accessibility_child_parent(&self, child_index: usize) -> Option<usize>
fn accessibility_child_path(&self, child_index: usize) -> Option<Vec<usize>>
fn accessibility_represents_child(&self, child_index: usize) -> bool
fn is_enabled(&self) -> bool
fn ime_requires_deferred_ack(&self) -> bool
fn ime_edit_fingerprint(&self, key: &[u8; 32]) -> Option<[u8; 32]>
fn ime_purpose(&self) -> Option<ImePurpose>
fn ime_multiline(&self) -> bool
fn presented(&self) -> bool
fn opening(&self) -> bool
fn text_review(&self) -> Option<(usize, String)>
fn dev_route(&self) -> Option<RouteSnapshot>
fn appearance_intent(&self) -> Option<AppearanceIntent>
fn needs_idle_sync(&self) -> bool
fn wants_pointer_capture(&self) -> bool
fn needs_animation_frame(&self) -> bool
fn next_wake_deadline(&self) -> Option<Instant>
fn modal_capture(&self) -> Option<Rect>
fn has_pending_visual_work(&self) -> bool
fn has_transient_feedback(&self) -> bool
fn needs_redraw(&self) -> bool
fn collect_damage(&self, regions: &mut Vec<Rect>)
fn damage_covers_own_box(&self) -> bool
fn is_layout_dirty(&self) -> bool
fn layout_needs_measure(&self) -> bool
fn is_default_keyboard_focus(&self) -> bool
fn keyboard_input_scope(&self) -> Option<u64>
fn primary_vertical_scroll(&self) -> Option<PrimaryScrollRegion>
fn semantic_readers(&self) -> &'static [RegisteredSemanticReader]
fn set_platform_conventions(&mut self, conventions: PlatformConventions)
fn set_interaction_environment(&mut self, environment: InteractionEnvironment)
fn settle(&mut self, edits: &mut Edits<'_>, path: &ExId)
fn measure( &mut self, known: Size<Option<f32>>, available: Size<AvailableSpace>, text_renderer: &mut TextRenderer, ) -> Size<f32>
fn adjust_layout_style( &mut self, taffy: &mut TaffyTree, node: NodeId, text: &mut TextRenderer, ) -> bool
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 observe_physical_input(&mut self, input: PhysicalInput)
fn handle_event(&mut self, event: &WindowEvent, ctx: &mut EventCtx<'_>)
fn children_mut(&mut self) -> Vec<&mut dyn Widget>
fn reveal_descendant(&mut self, target: *const dyn Widget) -> bool
fn take_action_palette_request(&mut self) -> Option<ActionAddress>
fn take_search_request(&mut self) -> bool
fn take_committed_action(&mut self) -> Option<Vec<ChangeHash>>
fn set_undo_status(&mut self, status: &mut dyn FnMut() -> UndoStatus)
fn take_undo_request(&mut self) -> Option<UndoRequest>
fn handle_local_undo_request(&mut self, request: UndoRequest) -> bool
fn set_focus(&mut self, focused: bool)
fn set_invalid(&mut self, invalid: bool)
fn focus_synthetic_accessibility(&mut self, path: &[usize]) -> bool
fn perform_action( &mut self, action: &Action, key_path: &[u64], 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
fn start_deferred_text(&mut self) -> Option<Receipt>
fn commit_deferred_text(&mut self, text: &str) -> Option<Receipt>
fn on_external_event( &mut self, payload: &str, state: &mut Edits<'_>, root: &(dyn Any + 'static), )
fn take_focus_reset(&mut self) -> bool
fn take_accessibility_request(&mut self) -> Option<AccessibilityRequest>
fn restore_dev_route(&mut self, route: &RouteSnapshot) -> bool
fn set_motion_reduced(&mut self, reduced: bool)
fn apply_room_action( &mut self, doc: &mut Edits<'_>, type_id: &str, payload: &[u8], ) -> bool
fn start_operation( &mut self, op: &ResourceOperation<'_>, doc: &mut Edits<'_>, path: &ExId, ) -> Result<Option<ResourceOperationStart>, String>
fn poll_resource_operation( &mut self, invocation: InvocationId, cancellation_requested: bool, doc: &AutoCommit, path: &ExId, ) -> Option<InvocationUpdate>
fn take_structure_dirty(&mut self) -> bool
fn mark_drawn(&mut self)
fn release_scene_cache(&mut self)
fn draw_overlay( &mut self, scene: &mut Scene, transform: Affine, text_renderer: &mut TextRenderer, theme: &Theme, presence: &PresenceCtx, )
fn apply_primary_vertical_scroll( &mut self, action: PrimaryScrollAction, ) -> PrimaryScrollResult
fn focus_requested(&mut self, target: Option<NodeId>, tree: &TaffyTree)
fn mount_native_views(&mut self, host: &NativeViewHost<'_>)
fn native_view_frame_start(&mut self)
fn unmount_native_views(&mut self)
§fn set_filter(&mut self, query: &str)
fn set_filter(&mut self, query: &str)
query; an empty query shows everything.
Match the way search does (crate::search::ListIndex) so a filter
and the platform search agree on what “matches” means.§fn filter_count(&self) -> Option<FilterCount>
fn filter_count(&self) -> Option<FilterCount>
§fn search_scope(&self) -> Option<ScopeDecl>
fn search_scope(&self) -> Option<ScopeDecl>
None searches the whole app.Auto Trait Implementations§
Blanket Implementations§
§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> 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<(ImePurpose, 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>
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). Read more§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§impl<T> Pointable for T
impl<T> Pointable for T
§impl<F, T, S> SimdInto<T, S> for Fwhere
T: SimdFrom<F, S>,
S: Simd,
impl<F, T, S> SimdInto<T, S> for Fwhere
T: SimdFrom<F, S>,
S: Simd,
§impl<T> Widget for Twhere
T: Decorator,
impl<T> Widget for Twhere
T: Decorator,
§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 build_layout( &mut self, taffy: &mut TaffyTree, theme: &Theme, node_map: &mut HashMap<NodeId, *mut dyn Widget>, ) -> NodeId
§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 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 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 synchronization/publication path.§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 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 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 children(&self) -> Vec<&dyn Widget>
§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 local_resource_operation_handlers(&self) -> &'static [&'static str]
fn local_resource_operation_handlers(&self) -> &'static [&'static str]
fn resource_operation_handlers(&self) -> HashSet<String>
fn name(&self) -> &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 test_rects(&self) -> Vec<(String, Rect)>
fn test_rects(&self) -> Vec<(String, Rect)>
Widget::get_rect; zero-area entries are dropped.§fn get_rect(&self) -> Rect
fn get_rect(&self) -> Rect
§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 child_clip_rect(&self) -> Option<Rect>
fn child_clip_rect(&self) -> Option<Rect>
§fn keeps_undo_step_open(&self) -> bool
fn keeps_undo_step_open(&self) -> bool
§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 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 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 tooltip_target_at(&self, point: Point) -> Option<(Rect, String)>
fn is_focusable(&self) -> bool
fn is_focused(&self) -> bool
§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 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 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 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 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 ime_requires_deferred_ack(&self) -> bool
fn ime_requires_deferred_ack(&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 ime_purpose(&self) -> Option<ImePurpose>
fn ime_purpose(&self) -> Option<ImePurpose>
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 presented(&self) -> bool
fn presented(&self) -> bool
true; the exception is a widget standing in for a process
that has started but not drawn. Must latch: once true, never
false again for the same content, or an un-presenting widget would
make a window vanish mid-resize. What shows meanwhile is decided by
Widget::opening.§fn opening(&self) -> bool
fn opening(&self) -> bool
presented, that showing nothing would read as
broken. Delayed so a fast open never flashes an indicator.§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.Self::on_nav_gesture would consume now. A widget
that owns history overrides this beside on_nav_gesture.§fn dev_route(&self) -> Option<RouteSnapshot>
fn dev_route(&self) -> Option<RouteSnapshot>
§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 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 wants_pointer_capture(&self) -> bool
§fn needs_animation_frame(&self) -> bool
fn needs_animation_frame(&self) -> bool
App polls this in Event::AboutToWait; without it a curve would
freeze partway until an unrelated event woke it again.§fn next_wake_deadline(&self) -> Option<Instant>
fn next_wake_deadline(&self) -> Option<Instant>
needs_animation_frame, this keeps
the event loop asleep until the requested instant and is appropriate
for filesystem/status polling rather than animation.§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 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 needs_redraw(&self) -> bool
fn needs_redraw(&self) -> bool
true (dirty every frame). Opt into incremental redraw by
tracking a dirty: bool, setting it in handle_event/sync, and
clearing it in mark_drawn(). Containers MUST forward: dirty iff any
descendant is.§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 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 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 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 primary_vertical_scroll(&self) -> Option<PrimaryScrollRegion>
fn primary_vertical_scroll(&self) -> Option<PrimaryScrollRegion>
§fn semantic_readers(&self) -> &'static [RegisteredSemanticReader]
fn semantic_readers(&self) -> &'static [RegisteredSemanticReader]
§fn set_platform_conventions(&mut self, conventions: PlatformConventions)
fn set_platform_conventions(&mut self, conventions: PlatformConventions)
§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 at build-time state; a widget
overrides it to check state of its own and then forward.§fn settle(&mut self, edits: &mut Edits<'_>, path: &ExId)
fn settle(&mut self, edits: &mut Edits<'_>, path: &ExId)
edits (a resource’s
dispatcher); the host syncs again when the document changed. The
default settles the children Widget::children_mut returns.fn measure( &mut self, known: Size<Option<f32>>, available: Size<AvailableSpace>, text_renderer: &mut TextRenderer, ) -> Size<f32>
§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 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 observe_physical_input(&mut self, input: PhysicalInput)
fn observe_physical_input(&mut self, input: PhysicalInput)
§fn handle_event(&mut self, event: &WindowEvent, ctx: &mut EventCtx<'_>)
fn handle_event(&mut self, event: &WindowEvent, ctx: &mut EventCtx<'_>)
fn children_mut(&mut self) -> Vec<&mut dyn Widget>
§fn reveal_descendant(&mut self, target: *const dyn Widget) -> bool
fn reveal_descendant(&mut self, target: *const dyn Widget) -> bool
§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 take_committed_action(&mut self) -> Option<Vec<ChangeHash>>
fn take_committed_action(&mut self) -> Option<Vec<ChangeHash>>
tilo_actions action its
ActionSpec exports, it reports the
document heads captured just before here, so the host can record
one undo boundary the same way a palette dispatch does. Rising-edge:
reading MUST clear it.§fn set_undo_status(&mut self, status: &mut dyn FnMut() -> UndoStatus)
fn set_undo_status(&mut self, status: &mut dyn FnMut() -> UndoStatus)
§fn take_undo_request(&mut self) -> Option<UndoRequest>
fn take_undo_request(&mut self) -> Option<UndoRequest>
§fn handle_local_undo_request(&mut self, request: UndoRequest) -> bool
fn handle_local_undo_request(&mut self, request: UndoRequest) -> bool
fn set_focus(&mut self, focused: 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_synthetic_accessibility(&mut self, path: &[usize]) -> bool
fn focus_synthetic_accessibility(&mut self, path: &[usize]) -> bool
§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
Action on this
widget, or on one of its synthetic accessibility nodes. May mutate
the CRDT like handle_event. Read more§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
target is the opaque stable value supplied through
AccessNode::with_action_target. Read more§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 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.§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 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 set_motion_reduced(&mut self, reduced: bool)
fn set_motion_reduced(&mut self, reduced: bool)
§fn apply_room_action(
&mut self,
doc: &mut Edits<'_>,
type_id: &str,
payload: &[u8],
) -> bool
fn apply_room_action( &mut self, doc: &mut Edits<'_>, type_id: &str, payload: &[u8], ) -> bool
type_id is silently
declined, not an error.§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 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>
§fn take_structure_dirty(&mut self) -> bool
fn take_structure_dirty(&mut self) -> bool
false. A container that changes its own child list sets its own flag
and ORs it with this traversal.§fn mark_drawn(&mut self)
fn mark_drawn(&mut self)
dirty flag. Default forwards to children.§fn release_scene_cache(&mut self)
fn release_scene_cache(&mut self)
§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.