Struct Button
pub struct Button { /* private fields */ }Implementations§
§impl Button
impl Button
pub fn new(id: &str, label: &str) -> Button
pub fn with_presence(self, path: Vec<PathSegment>) -> Button
pub fn with_presence(self, path: Vec<PathSegment>) -> Button
An empty path leaves presence opt-out (the default).
pub fn with_permission_scope(self, scope: PermissionScope) -> Button
pub fn with_permission_scope(self, scope: PermissionScope) -> Button
When the scope is denied the widget renders dimmed and rejects input.
pub fn on_click<F>(self, f: F) -> Buttonwhere
F: FnMut() + 'static,
pub fn on_click<F>(self, f: F) -> Buttonwhere
F: FnMut() + 'static,
Fires once per completed click (left-button release while the
cursor is still over the button), Enter, Space or an assistive
Activate.
pub fn on_action(self, binding: ActionBinding<()>) -> Button
pub fn on_action(self, binding: ActionBinding<()>) -> Button
Route pointer, keyboard and accessibility activation through an exported resource action. The host resolves policy against the fresh resource tree before dispatch.
pub fn on_effect<F>(self, handler: F) -> Buttonwhere
F: FnMut() + 'static,
pub fn on_effect<F>(self, handler: F) -> Buttonwhere
F: FnMut() + 'static,
Publish a zero-argument effect and route every activation through it.
This is the quick-app path: it keeps closure ergonomics without making
an invisible callback-only control. For replayable document mutations,
prefer a typed document Action.
pub fn on_view<F>(self, handler: F) -> Buttonwhere
F: FnMut() + 'static,
pub fn on_view<F>(self, handler: F) -> Buttonwhere
F: FnMut() + 'static,
Publish a zero-argument transient presentation action. View actions are discoverable and agent-driveable but intentionally absent from document history and collaboration logs.
pub fn with_icon(self, icon: Icon) -> Button
pub fn with_icon(self, icon: Icon) -> Button
With an empty label the icon is centred (icon-only button); with a label it sits to its left.
pub fn with_accessible_name(self, name: &str) -> Button
pub fn with_accessible_name(self, name: &str) -> Button
The text isn’t painted — it’s what a screen reader announces in place of the empty visible label. Use for every icon-only toolbar control so the glyph isn’t silent. A button that shows a label doesn’t need this; the label is its accessible name.
pub fn tooltip(self, text: impl Into<String>) -> Button
pub fn tooltip(self, text: impl Into<String>) -> Button
On an icon-only button, absent an explicit
with_accessible_name, this also
becomes the accessible name, so the same short label serves both
mouse and screen-reader users. Rendered centrally by the host’s
TooltipHost — no per-app wiring.
pub fn set_tooltip(&mut self, text: Option<String>)
pub fn set_accessible_name(&mut self, name: &str)
pub fn set_accessible_name(&mut self, name: &str)
Change what an icon-only button is announced (and published) as, for a control whose meaning flips with state (“Show sidebar” / “Hide sidebar”).
pub fn icon_only(id: &str, icon: Icon, label: &str) -> Button
pub fn icon_only(id: &str, icon: Icon, label: &str) -> Button
An icon-only button: icon is what it shows, label is what a
screen reader announces and what its tooltip says. It is a square of
its ControlSize’s height (never under the minimum pointer target)
and, like every toolbar glyph, a ButtonRole::Plain button unless
a role is given.
pub fn fill_width(self) -> Button
pub fn fill_width(self) -> Button
Stretch to the parent’s width. The height still comes from the
ControlSize; without this a button is as wide as its label.
pub fn control_size(self, size: ControlSize) -> Button
pub fn control_size(self, size: ControlSize) -> Button
How big this button is: its height and label role together (see
ControlSize).
pub fn role(self, role: ButtonRole) -> Button
pub fn role(self, role: ButtonRole) -> Button
What the button does; the role decides its whole look.
pub fn set_role(&mut self, role: ButtonRole)
pub fn toggled(self, on: bool) -> Button
pub fn toggled(self, on: bool) -> Button
Make this a toggle button: while on it stands on a lift of its
ground (a selected toolbar glyph, HIG §9.3) and is announced as a
pressed toggle. Use it on a ButtonRole::Plain glyph.
pub fn set_toggled(&mut self, on: bool)
pub fn set_toggled(&mut self, on: bool)
Turn a toggle button on or off (the host syncing from its model).
pub fn is_toggled(&self) -> bool
pub fn is_toggled(&self) -> bool
Whether this is a toggle button that is on.
pub fn shortcut_hint(self, shortcut: Shortcut) -> Button
pub fn shortcut_hint(self, shortcut: Shortcut) -> Button
Show the keyboard shortcut that does the same thing, after the label,
in the platform’s keycap legends (Ctrl+Enter on Linux and Windows,
⌘↩ on macOS). It is part of the button’s width.
pub fn with_enabled(self, enabled: bool) -> Button
pub fn set_enabled(&mut self, enabled: bool)
pub fn enabled_from(self, state: &LocalState<bool>) -> Button
pub fn enabled_from(self, state: &LocalState<bool>) -> Button
Follow state for whether the button can act (“Save” enabled while
there is something to save): a change through any clone of it shows
on the next sync.
pub fn with_default_focus(self) -> Button
pub fn with_default_focus(self) -> Button
Mark this button as its page’s encouraged action: when the page is rebuilt with a focus reset, keyboard focus starts here, so Enter activates it.
pub fn set_compact_toolbar_presentation(&mut self, compact: bool)
pub fn set_compact_toolbar_presentation(&mut self, compact: bool)
Prefer the icon in a space-constrained toolbar while retaining the original visible label as the accessible name and hover tooltip.
Apps should use this for responsive presentation only; activation, focus and resource-action semantics are intentionally unchanged.
pub fn apply_layout_external(&mut self, rect: Rect)
pub fn apply_layout_external(&mut self, rect: Rect)
The counterpart to TextInput::apply_layout_external for an app
that hand-positions a shared control over its own painted chrome;
the button still owns its focus / a11y / activation contract, only
its geometry is caller-driven.
§impl Button
impl Button
pub fn paint(
scene: &mut Scene,
transform: Affine,
text_renderer: &mut TextRenderer,
theme: &Theme,
face: &ButtonFace<'_>,
)
pub fn paint( scene: &mut Scene, transform: Affine, text_renderer: &mut TextRenderer, theme: &Theme, face: &ButtonFace<'_>, )
Paint a ButtonFace: the retained Button’s look for a canvas
host that owns its own hit-testing (ButtonFace::contains).
§impl Button
impl Button
pub fn with_popover<C>(self, content: C) -> PopoverButton<C>where
C: Widget + 'static,
pub fn with_popover<C>(self, content: C) -> PopoverButton<C>where
C: Widget + 'static,
Make this button open content in a popover anchored to its own
rect.
Trait Implementations§
Source§impl ActionControl<()> for Button
impl ActionControl<()> for Button
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 Button
impl ActionControls for Button
§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 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 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_pending_control_invocation(&self) -> bool
fn has_pending_control_invocation(&self) -> bool
§impl PermissionGated for Button
impl PermissionGated for Button
§fn permission_scope(&self) -> Option<PermissionScope>
fn permission_scope(&self) -> Option<PermissionScope>
§impl PublishesPresence for Button
impl PublishesPresence for Button
§fn presence_key(&self) -> Option<PresenceKey>
fn presence_key(&self) -> Option<PresenceKey>
§fn presence_payload(&self) -> Option<(PresenceKey, PresencePayload)>
fn presence_payload(&self) -> Option<(PresenceKey, PresencePayload)>
§impl PublishesResources for Button
impl PublishesResources for Button
§fn resources(&self, _doc: &AutoCommit) -> Vec<Resource>
fn resources(&self, _doc: &AutoCommit) -> Vec<Resource>
doc lets
a provider enumerate resources living in the document.§fn caller_view_resources(&self, _doc: &AutoCommit) -> Vec<Resource>
fn caller_view_resources(&self, _doc: &AutoCommit) -> Vec<Resource>
§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<Resource>
fn resource(&self, _doc: &AutoCommit, _id: &str) -> Option<Resource>
§fn resources_for(
&self,
participant: Option<&ParticipantId>,
doc: &AutoCommit,
) -> Vec<Resource>
fn resources_for( &self, participant: Option<&ParticipantId>, doc: &AutoCommit, ) -> Vec<Resource>
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<Resource>
fn resource_for( &self, participant: Option<&ParticipantId>, doc: &AutoCommit, id: &str, ) -> Option<Resource>
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 Widget for Button
impl Widget for Button
§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
An intrinsic button’s width is its measured content. Taffy only asks
measure for an axis it cannot resolve, so the label is measured
here as well and the width pinned when the solver has not done so.
§fn is_layout_dirty(&self) -> bool
fn is_layout_dirty(&self) -> bool
The Rect::ZERO sentinel keeps the first frame’s
compute_layout running so apply_layout can populate the rect;
after that it stays clean (pure translation handled via the
cache’s append transform, no taffy involvement).
§fn as_any(&self) -> Option<&(dyn Any + 'static)>
fn as_any(&self) -> Option<&(dyn Any + 'static)>
A host that lays buttons out (a header row) reaches their presentation through this.
§fn tooltip(&self) -> Option<&str>
fn tooltip(&self) -> Option<&str>
Returns the raw string (a fluent key or plain text); the host resolves i18n and renders.
§fn perform_action(
&mut self,
action: &Action,
_key_path: &[u64],
_state: &mut Edits<'_>,
_root: &(dyn Any + 'static),
) -> bool
fn perform_action( &mut self, action: &Action, _key_path: &[u64], _state: &mut Edits<'_>, _root: &(dyn Any + 'static), ) -> bool
Enter, Space, or an AccessKit Activate performs the same CRDT
mutation + imperative callback as a mouse click.
§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 build_layout( &mut self, taffy: &mut TaffyTree, theme: &Theme, node_map: &mut HashMap<NodeId, *mut dyn Widget>, ) -> NodeId
fn measure( &mut self, known: Size<Option<f32>>, _available: Size<AvailableSpace>, text: &mut TextRenderer, ) -> Size<f32>
§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,
out_scene: &mut Scene,
out_transform: Affine,
text_renderer: &mut TextRenderer,
theme: &Theme,
presence: &PresenceCtx,
)
fn draw( &mut self, out_scene: &mut Scene, out_transform: Affine, text_renderer: &mut TextRenderer, theme: &Theme, presence: &PresenceCtx, )
scene. The default paints nothing.§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 mark_drawn(&mut self)
fn mark_drawn(&mut self)
dirty flag. Default forwards to children.§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 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 handle_event(&mut self, event: &WindowEvent, ctx: &mut EventCtx<'_>)
fn handle_event(&mut self, event: &WindowEvent, ctx: &mut EventCtx<'_>)
fn name(&self) -> &'static str
fn as_any_mut(&mut self) -> Option<&mut (dyn Any + 'static)>
§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 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 is_focusable(&self) -> bool
§fn is_default_keyboard_focus(&self) -> bool
fn is_default_keyboard_focus(&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 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 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 synchronization/publication 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 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 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 observe_physical_input(&mut self, _input: PhysicalInput)
fn observe_physical_input(&mut self, _input: PhysicalInput)
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 children_mut(&mut self) -> Vec<&mut dyn Widget>
§fn local_resource_operation_handlers(&self) -> &'static [&'static str]
fn local_resource_operation_handlers(&self) -> &'static [&'static str]
§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 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 tooltip_side(&self) -> TooltipSide
fn tooltip_side(&self) -> TooltipSide
fn tooltip_target_at(&self, point: Point) -> Option<(Rect, String)>
§fn keyboard_input_scope(&self) -> Option<u64>
fn keyboard_input_scope(&self) -> Option<u64>
§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)
§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 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 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 ime_requires_deferred_ack(&self) -> bool
fn ime_requires_deferred_ack(&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_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 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; 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.§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 set_motion_reduced(&mut self, reduced: bool)
fn set_motion_reduced(&mut self, reduced: 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 keeps_undo_step_open(&self) -> bool
fn keeps_undo_step_open(&self) -> bool
§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 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 semantic_readers(&self) -> &'static [RegisteredSemanticReader]
fn semantic_readers(&self) -> &'static [RegisteredSemanticReader]
§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 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 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 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 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 release_scene_cache(&mut self)
fn release_scene_cache(&mut self)
§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 Button
impl !RefUnwindSafe for Button
impl !Send for Button
impl !Sync for Button
impl Unpin for Button
impl UnsafeUnpin for Button
impl !UnwindSafe for Button
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