Struct TextInput
pub struct TextInput { /* private fields */ }Implementations§
§impl TextInput
impl TextInput
pub fn new(path: Vec<PathSegment>) -> TextInput
pub fn new(path: Vec<PathSegment>) -> TextInput
Empty path opts the widget out of presence rendering.
pub fn set_align(&mut self, align: TextAlign)
pub fn set_align(&mut self, align: TextAlign)
None disables authorship stamping.
Align the text within the input’s width (a centred title).
pub fn bind_text(&mut self, obj: ExId)
pub fn bind_text(&mut self, obj: ExId)
Show the text object obj, read on every sync. What the user types
stays local until the owner takes it (Self::take_dirty) and
submits it as an action.
pub fn clear_text_binding(&mut self)
pub fn clear_text_binding(&mut self)
Stop showing a text object, keeping what the input shows.
A binding replaces any earlier local mode, so the input stays unbound
until an owner calls Self::bind_text again.
pub fn bound_obj(&self) -> Option<&ExId>
pub fn bound_obj(&self) -> Option<&ExId>
For BlockEditor to match local blocks to doc list elements by object identity.
pub fn with_text_role(self, role: TextRole) -> TextInput
pub fn with_text_role(self, role: TextRole) -> TextInput
Set the field’s text in role (default TextRole::Body).
pub fn with_plain_chrome(self) -> TextInput
pub fn set_text_role(&mut self, role: TextRole)
pub fn set_text_role(&mut self, role: TextRole)
Change the field’s text role; see Self::with_text_role.
pub fn set_plain_chrome(&mut self, plain: bool)
pub fn with_mono(self) -> TextInput
pub fn set_mono(&mut self, mono: bool)
pub fn is_mono(&self) -> bool
pub fn with_kind(self, kind: TextInputKind) -> TextInput
pub fn with_kind(self, kind: TextInputKind) -> TextInput
Declare the exceptional structured intent of a field. Natural-language prose is already the default and never needs an annotation.
pub fn set_kind(&mut self, kind: TextInputKind)
pub fn kind(&self) -> TextInputKind
pub fn with_spellcheck(self, on: bool) -> TextInput
pub fn with_spellcheck(self, on: bool) -> TextInput
Enable or disable spelling assistance for this field. It defaults on for ordinary text and is automatically suppressed for secret and code-like fields.
pub fn spellcheck_enabled(&self) -> bool
pub fn with_autocorrect(self, on: bool) -> TextInput
pub fn with_autocorrect(self, on: bool) -> TextInput
Override automatic correction for this field. Without an override the user-wide Spell checker setting applies.
pub fn autocorrect_enabled(&self) -> bool
pub fn with_spell_language(self, language: &str) -> TextInput
pub fn with_spell_language(self, language: &str) -> TextInput
Select a language dictionary, accepting both en-US and en_US style
tags. If that Hunspell dictionary is unavailable, non-English checking
quietly disables itself; English retains the embedded fallback.
pub fn set_spell_language(&mut self, language: &str)
pub fn spell_language(&self) -> &str
pub fn with_text_action(self, id: &str, label: &str) -> TextInput
pub fn with_text_action(self, id: &str, label: &str) -> TextInput
Add a host-owned action to the selection context menu. Activating it
produces a request drained by take_text_action_request; the widget
never blocks on the action itself.
pub fn add_text_action(&mut self, id: &str, label: &str)
pub fn take_text_action_request(&mut self) -> Option<TextActionRequest>
pub fn with_font_family(self, family: FontChoice) -> TextInput
pub fn with_font_family(self, family: FontChoice) -> TextInput
Wins over the mono flag.
pub fn set_font_family(&mut self, family: Option<FontChoice>)
pub fn font_family(&self) -> Option<&FontChoice>
pub fn from_state(state: &LocalState<String>) -> TextInput
pub fn from_state(state: &LocalState<String>) -> TextInput
Create a true two-way binding to typed process-local text state.
User edits update state; mutations through any clone of state
update this input on the next synchronization pass. Several inputs and
read-only Text views can therefore share one value
without initial-value snapshots, callbacks, or app-owned fan-out.
Selecting a document or external-buffer binding later replaces this
process-local binding explicitly.
pub fn with_char_filter(self, filter: fn(char) -> bool) -> TextInput
pub fn with_char_filter(self, filter: fn(char) -> bool) -> TextInput
Admit only characters accepted by filter on every insertion path.
This is deliberately a character predicate, not a validator for the whole value: callers still own domain parsing and error reporting when the field is submitted.
pub fn with_initial_value(self, s: &str) -> TextInput
pub fn with_initial_value(self, s: &str) -> TextInput
Cursor parks at the end; dirty stays false (programmatic seed).
pub fn set_text(&mut self, s: &str)
pub fn value(&self) -> &str
pub fn is_composing(&self) -> bool
pub fn is_composing(&self) -> bool
Whether an IME candidate is displayed but not yet committed as text. Composite editors must leave candidate-selection keys to the IME.
pub fn on_change(self, callback: impl FnMut(&str) + 'static) -> TextInput
pub fn on_change(self, callback: impl FnMut(&str) + 'static) -> TextInput
Register an app-local callback for committed user edits.
Keyboard input, paste, accessibility edits, and committed IME text
notify once with the complete new value. IME preedit, cursor movement,
selection changes, Self::set_text, and CRDT synchronization do not.
It runs beside a bound action (Self::on_action), in either order of
registration.
pub fn on_action(self, binding: ActionBinding<String>) -> TextInput
pub fn on_action(self, binding: ActionBinding<String>) -> TextInput
Route committed keyboard, paste, IME, and accessibility edits through an exported action with the complete current string as input.
pub fn insert_at_cursor(&mut self, s: &str)
pub fn insert_at_cursor(&mut self, s: &str)
Insert s at the caret as the user’s edit.
pub fn cursor_pos(&self) -> usize
pub fn caret_position(&self) -> TextPosition
pub fn caret_position(&self) -> TextPosition
The caret’s document offset and visual side at an ambiguous boundary.
pub fn set_cursor_pos(&mut self, pos: usize)
pub fn set_cursor_pos(&mut self, pos: usize)
Does not count as a user edit (dirty stays false).
pub fn set_caret_position(&mut self, position: TextPosition)
pub fn set_caret_position(&mut self, position: TextPosition)
Seat the caret at an exact shaped position without counting as an edit.
pub fn selection_range_public(&self) -> Option<(usize, usize)>
pub fn selection_anchor_focus_public(&self) -> Option<(usize, usize)>
pub fn selection_anchor_focus_public(&self) -> Option<(usize, usize)>
The live selection endpoints in anchor/focus order for accessibility
bridges. Unlike Self::selection_range_public, this preserves the
direction in which the user extended the selection.
pub fn char_x_positions(&self) -> &[f64]
pub fn char_x_positions(&self) -> &[f64]
len() is text.len() + 1; empty until the first draw lands.
pub fn scroll_x(&self) -> f64
pub fn set_preserve_unfocused_scroll(&mut self, preserve: bool)
pub fn set_preserve_unfocused_scroll(&mut self, preserve: bool)
Retain bounded multiline scroll when used as an inert, unfocused source view. Does not enable focus, caret painting, input handling or document binding.
pub fn scroll_y(&self) -> f64
pub fn body_line_height(&self) -> f64
pub fn gutter_width(&self) -> f64
pub fn byte_at_point(&self, point: Point) -> usize
pub fn byte_at_point(&self, point: Point) -> usize
Requires a prior draw to have built the metrics.
pub fn position_at_point(&self, point: Point) -> TextPosition
pub fn position_at_point(&self, point: Point) -> TextPosition
Exact caret position under a point, including mixed-BiDi affinity.
pub fn is_plain(&self) -> bool
pub fn text_padding_x(&self, theme: &Theme) -> f64
pub fn text_inset_x(&self, theme: &Theme) -> f64
pub fn text_inset_x(&self, theme: &Theme) -> f64
Where the field’s text starts inside its rect: the multiline inset (and code gutter) of a wrapping field, the horizontal padding of a single-line one.
pub fn text_band(&self) -> (f64, f64)
pub fn text_band(&self) -> (f64, f64)
Single source of truth for both the local and any peer caret, so they line up.
pub fn caret_rect(&self, theme: &Theme, byte: usize) -> Rect
pub fn caret_rect(&self, theme: &Theme, byte: usize) -> Rect
Peer carets render through this too, so a remote caret is pixel-identical, only recoloured.
pub fn caret_rect_at(&self, theme: &Theme, position: TextPosition) -> Rect
pub fn caret_rect_at(&self, theme: &Theme, position: TextPosition) -> Rect
Caret geometry for an exact byte-and-affinity position.
pub fn selection_rect(&self, theme: &Theme, start: usize, end: usize) -> Rect
pub fn selection_rect(&self, theme: &Theme, start: usize, end: usize) -> Rect
Single-line only; multiline callers use selection_rects.
pub fn selection_rects(
&self,
theme: &Theme,
start: usize,
end: usize,
) -> Vec<Rect>
pub fn selection_rects( &self, theme: &Theme, start: usize, end: usize, ) -> Vec<Rect>
One rect per visual row the range spans.
pub fn content_height(&self) -> f64
pub fn content_height(&self) -> f64
Falls back to one row when nothing has been laid out yet.
pub fn take_dirty(&mut self) -> Option<String>
pub fn take_dirty(&mut self) -> Option<String>
Some(text) if a user-initiated edit landed since the last call.
pub fn apply_layout_external(&mut self, rect: Rect)
pub fn apply_layout_external(&mut self, rect: Rect)
Places the input without a layout tree — only safe on local-mode
TextInputs with no presence path or permission scope.
pub fn with_id(self, id: &str) -> TextInput
pub fn with_external_buffer(self, buffer: Arc<Mutex<String>>) -> TextInput
pub fn with_external_buffer(self, buffer: Arc<Mutex<String>>) -> TextInput
Mirror edits into caller-owned process-local memory without creating a
CRDT object. Intended for passwords/PINs; use with Self::local.
pub fn with_secret(self, on: bool) -> TextInput
pub fn set_secret(&mut self, on: bool)
pub fn is_secret(&self) -> bool
pub fn with_reveal(self, on: bool) -> TextInput
pub fn with_reveal(self, on: bool) -> TextInput
Only meaningful together with with_secret. Secret fields start
hidden; a single-line one also offers its own show/hide control.
pub fn set_reveal(&mut self, on: bool)
pub fn toggle_reveal(&mut self)
pub fn toggle_reveal(&mut self)
No-op on a non-secret field.
pub fn is_revealed(&self) -> bool
pub fn has_reveal_control(&self) -> bool
pub fn has_reveal_control(&self) -> bool
Whether this field paints and offers the trailing show/hide control.
pub fn reveal_control_rect(&self) -> Option<Rect>
pub fn reveal_control_rect(&self) -> Option<Rect>
Where the show/hide control sits, or None without one.
pub fn multiline(self, on: bool) -> TextInput
pub fn set_multiline(&mut self, on: bool)
pub fn is_multiline(&self) -> bool
pub fn with_gutter(self, on: bool) -> TextInput
pub fn set_gutter(&mut self, on: bool)
pub fn with_current_line_highlight(self, on: bool) -> TextInput
pub fn set_current_line_highlight(&mut self, on: bool)
pub fn with_highlighter(self, h: Box<dyn Highlighter>) -> TextInput
pub fn set_highlighter(&mut self, h: Option<Box<dyn Highlighter>>)
pub fn with_tab_width(self, n: usize) -> TextInput
pub fn with_tab_width(self, n: usize) -> TextInput
0 = literal \t. Shift+Tab outdents by the same width.
pub fn set_tab_width(&mut self, n: usize)
pub fn with_enter_submits(self, on: bool) -> TextInput
pub fn with_enter_submits(self, on: bool) -> TextInput
Read the signal with take_submit.
pub fn take_submit(&mut self) -> bool
pub fn take_submit(&mut self) -> bool
true once per submitting Enter; clears on read.
pub fn disabled(self, on: bool) -> TextInput
pub fn set_disabled(&mut self, on: bool)
pub fn set_disabled(&mut self, on: bool)
Drops any in-progress drag so the widget doesn’t hold pointer capture while inert.
pub fn is_disabled(&self) -> bool
pub fn with_placeholder(self, hint: impl Into<LabelKey>) -> TextInput
pub fn with_accessible_name(self, name: impl Into<String>) -> TextInput
pub fn with_accessible_name(self, name: impl Into<String>) -> TextInput
Set the stable label announced for this field by assistive technology. Placeholder text is intentionally not used as the label because it disappears after entry and often describes format rather than purpose.
pub fn set_placeholder(&mut self, hint: &str)
pub fn placeholder(&self) -> &str
pub fn shows_placeholder(&self) -> bool
pub fn control_size(self, size: ControlSize) -> TextInput
pub fn control_size(self, size: ControlSize) -> TextInput
How tall a single-line field is: the height of a button of the same size, so fields and buttons share a row. Regular (32) by default.
pub fn set_control_size(&mut self, size: ControlSize)
pub fn set_control_size(&mut self, size: ControlSize)
Change the field’s ControlSize; see Self::control_size.
pub fn with_min_lines(self, lines: usize) -> TextInput
pub fn with_min_lines(self, lines: usize) -> TextInput
A wrapping field at least lines lines tall, with the same text
inset as a single-line field and never shorter than one.
pub fn on_submit(self, callback: impl FnMut(&str) + 'static) -> TextInput
pub fn on_submit(self, callback: impl FnMut(&str) + 'static) -> TextInput
Run callback with the text when the person presses Enter: the
field’s commit for a tree-owned field nobody polls. Enter submits
(Shift+Enter still breaks a wrapping field’s line).
A trailing clear button inside the field while it holds text.
pub fn with_trailing_accessory(
self,
icon: Icon,
name: &str,
action: AccessoryAction,
) -> TextInput
pub fn with_trailing_accessory( self, icon: Icon, name: &str, action: AccessoryAction, ) -> TextInput
A trailing icon button inside the field, named name for assistive
technology (a reveal toggle, a picker).
pub fn accessory_pressed(&self) -> Option<bool>
pub fn accessory_pressed(&self) -> Option<bool>
Whether the trailing accessory is a toggle that is on.
pub fn set_accessory_pressed(&mut self, on: bool)
pub fn set_accessory_pressed(&mut self, on: bool)
Turn a toggle accessory on or off (the host syncing from its model). No-op for any other accessory.
pub fn with_content_size(self, px: f32) -> TextInput
pub fn with_content_size(self, px: f32) -> TextInput
Edit text that belongs to a document in place, at the document’s own
px size (a note on a zoomed page): the text scale does not grow it,
the document’s zoom does.
pub fn set_content_size(&mut self, px: Option<f32>)
pub fn set_content_size(&mut self, px: Option<f32>)
Change or clear the document-space size of Self::with_content_size.
pub fn with_span_highlighter(
self,
highlighter: impl Fn(&str, &Theme) -> Vec<(Range<usize>, AlphaColor<Srgb>)> + 'static,
) -> TextInput
pub fn with_span_highlighter( self, highlighter: impl Fn(&str, &Theme) -> Vec<(Range<usize>, AlphaColor<Srgb>)> + 'static, ) -> TextInput
Colour spans of a single-line field’s text (references in a
formula); see SpanHighlighter. A wrapping field takes a
Highlighter instead.
pub fn is_dragging(&self) -> bool
pub fn is_dragging(&self) -> bool
For BlockEditor’s cross-block drag coordinator.
pub fn set_selection(&mut self, anchor: usize, cursor: usize)
pub fn set_selection(&mut self, anchor: usize, cursor: usize)
For BlockEditor’s cross-block drag coordinator, painting a selection
band on a block being dragged through without it being the click
target. anchor == cursor clears.
pub fn select_all(&mut self)
pub fn select_all(&mut self)
For wrappers with “focus selects the value” semantics, e.g. NumberInput.
pub fn overhang(&self) -> Option<Rect>
pub fn overhang(&self) -> Option<Rect>
What the last draw painted outside the field’s rect: while a correction is offered, its chip, which floats above or below the field. A host proving its own damage repaints this too when the field changes.
Open the native text menu at a logical-pixel position. Hosts use this for keyboard menu keys, accessibility actions, and deterministic UI previews; pointer right-clicks route here automatically.
Trait Implementations§
Source§impl ActionControl<String> for TextInput
impl ActionControl<String> for TextInput
Source§fn bind_action(self, binding: ActionBinding<String>) -> Self
fn bind_action(self, binding: ActionBinding<String>) -> Self
binding with the control’s committed value.§impl ActionControls for TextInput
impl ActionControls for TextInput
§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
Source§impl EditsText for TextInput
impl EditsText for TextInput
Source§fn show_text(&mut self, obj: ObjId)
fn show_text(&mut self, obj: ObjId)
obj, reading it on every sync, and keep edits
out of the document.Source§fn take_edited(&mut self) -> Option<String>
fn take_edited(&mut self) -> Option<String>
Source§fn reset_text(&mut self, text: &str)
fn reset_text(&mut self, text: &str)
text, which is not a user edit.Source§fn shown_text(&self) -> &str
fn shown_text(&self) -> &str
§impl FormControl for TextInput
impl FormControl for TextInput
§fn with_form_accessible_name(self, name: &str) -> TextInput
fn with_form_accessible_name(self, name: &str) -> TextInput
§impl PublishesPresence for TextInput
impl PublishesPresence for TextInput
§fn presence_key(&self) -> Option<PresenceKey>
fn presence_key(&self) -> Option<PresenceKey>
The widget’s path, so peers editing the same field share carets.
§fn presence_payload(&self) -> Option<(PresenceKey, PresencePayload)>
fn presence_payload(&self) -> Option<(PresenceKey, PresencePayload)>
The caret, or the selection when one is extended, while focused. A secret field publishes nothing.
§impl UndoPoints for TextInput
impl UndoPoints for TextInput
§impl Widget for TextInput
impl Widget for TextInput
§fn measure(
&mut self,
known: Size<Option<f32>>,
available: Size<AvailableSpace>,
text_renderer: &mut TextRenderer,
) -> Size<f32>
fn measure( &mut self, known: Size<Option<f32>>, available: Size<AvailableSpace>, text_renderer: &mut TextRenderer, ) -> Size<f32>
Single-line keeps its fixed row height from build_layout (ZERO
here). Embedded callers use apply_layout_external and never reach this.
§fn layout_needs_measure(&self) -> bool
fn layout_needs_measure(&self) -> bool
A single-line field scrolls content horizontally rather than growing, so it only needs re-measure before its first layout or right after a user edit — never blocking the scroll fast path while idle.
§fn is_layout_dirty(&self) -> bool
fn is_layout_dirty(&self) -> bool
Same inputs as Self::layout_needs_measure: an input’s size follows
its content only through a user edit (dirty, drained by the owner’s
take_dirty) or a model change that reshapes multiline or attributed
text (model_layout_dirty, cleared by measure). Idle inputs would
otherwise be re-measured on every retained frame.
§fn cursor_shape(&self, point: Point) -> Option<CursorIcon>
fn cursor_shape(&self, point: Point) -> Option<CursorIcon>
A disabled input claims no cursor and defers to the host default.
§fn tooltip_target_at(&self, point: Point) -> Option<(Rect, String)>
fn tooltip_target_at(&self, point: Point) -> Option<(Rect, String)>
Hosts that embed the field without a layout tree still get the show/hide control’s tooltip.
§fn needs_redraw(&self) -> bool
fn needs_redraw(&self) -> bool
Repaints like a leaf; the show/hide control does not make the field a container that only redraws for a dirty child.
§fn perform_semantic_action(
&mut self,
target: &str,
action: &Action,
_state: &mut Edits<'_>,
_root: &(dyn Any + 'static),
) -> bool
fn perform_semantic_action( &mut self, target: &str, action: &Action, _state: &mut Edits<'_>, _root: &(dyn Any + 'static), ) -> bool
The trailing accessory is a named control of its own: activating it (an agent, a screen reader) does what a press does.
§fn wants_pointer_capture(&self) -> bool
fn wants_pointer_capture(&self) -> bool
Keeps receiving cursor events during a drag even if the cursor wanders into a sibling widget.
§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, )
Paints the open context menu here so it floats above every sibling regardless of tree order.
§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), root: &(dyn Any + 'static))
fn sync(&mut self, state: &(dyn Any + 'static), root: &(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 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 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 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 is_focusable(&self) -> 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 set_focus(&mut self, focused: 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 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 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 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
Action on this
widget, or on one of its synthetic accessibility nodes. May mutate
the CRDT like handle_event. Read more§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 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 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 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 observe_physical_input(&mut self, _input: PhysicalInput)
fn observe_physical_input(&mut self, _input: PhysicalInput)
§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 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 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(&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 focus_requested(&mut self, target: Option<NodeId>, tree: &TaffyTree)
fn focus_requested(&mut self, target: Option<NodeId>, tree: &TaffyTree)
§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 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 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 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 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 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 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 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 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 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 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 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 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 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.Auto Trait Implementations§
impl Freeze for TextInput
impl !RefUnwindSafe for TextInput
impl !Send for TextInput
impl !Sync for TextInput
impl Unpin for TextInput
impl UnsafeUnpin for TextInput
impl !UnwindSafe for TextInput
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