Skip to main content

TextInputField

Struct TextInputField 

Source
pub struct TextInputField { /* private fields */ }
Expand description

Editable single-line text surface primitive.

See the module docs for the full feature list and a compositional example.

Implementations§

Source§

impl TextInputField

Source

pub fn new(text: Signal<String>) -> Self

Construct a new field bound to text.

Source

pub fn placeholder(self, text: impl Into<String>) -> Self

Declarative placeholder string. The field itself paints nothing for placeholder — that visual is the composite parent’s responsibility (TextInput overlays a TextWidget). The string is still stored here and published via AccessKit’s placeholder property so screen readers announce it.

Source

pub fn enabled(self, enabled: impl Into<Prop<bool>>) -> Self

Set the enabled state, statically or reactively. Disabled blocks input and AccessKit interaction. Forwarded to the arena at build time.

Source

pub fn read_only(self, read_only: bool) -> Self

Mark the field read-only. Caret and selection still work; inserts, deletes, paste, undo/redo, and cut are all no-ops.

Source

pub fn max_length(self, max_length: usize) -> Self

Hard cap on document length in chars (grapheme count is approximated — each char counts as one unit, matching String::chars().count()).

Source

pub fn on_submit_fn(self, f: impl Fn(&mut EventContext<'_>) + 'static) -> Self

Closure fired on Enter. Unlike on_blur_fn, this does not move focus — the field stays focused and the caret stays where it was.

Source

pub fn on_access_set_value( self, f: impl Fn(&str, &mut EventContext<'_>) -> bool + 'static, ) -> Self

Handle an assistive technology’s whole-value write, given the string it set.

Leave it unset for a field whose bound Signal<String> is the value: the write has already landed and there is nothing to derive.

Install one for a field whose text is a projection of a typed value, as SpinBox and the date and time editors are. There the string is only a display of the real value, so without this an Action::SetValue resolved against the inner text node changes what is shown, leaves the typed value stale until the next blur, and never fires the host’s change callback — an assistive technology or an automation client sees a success and the wrong value. The composite’s own node handles SetValue properly; this closes the same door on the text node beneath it.

The string is handed over rather than read back from the bound signal because the document→signal sync is deferred to the next frame tick, so a host reading the signal here would parse the text from before this edit and revert.

Source

pub fn on_blur_fn(self, f: impl Fn(&mut EventContext<'_>) + 'static) -> Self

Closure fired once per focus-loss, after selection/scroll have been reset. SpinBox-style callers parse and reformat here; validators revalidate here.

Source

pub fn char_filter(self, f: impl Fn(char) -> bool + 'static) -> Self

Per-character input-filter predicate. Applied uniformly to keyboard input, IME commits, and clipboard paste so a filtered field cannot receive disallowed characters through any path. Composes with max_length and the built-in control/newline strip (filter runs after the strip). Whole-string validity (e.g. “at most one decimal point”) is a commit-time concern for on_blur / on_submit.

Source

pub fn suffix(self, text: impl Into<Prop<String>>) -> Self

Static non-editable trailing string rendered flush-right inside the field’s bounds (Qt’s QSpinBox::suffix). The caret cannot enter the suffix; clicks past the text end position the caret at the last editable character.

Accepts a static String/&str or a reactive Signal<String> / Prop<String>; when bound, the field re-measures the suffix glyphs and relayouts the editable text viewport each time the signal fires. Typical use: a SpinBox with special_value_text binds an empty string to the suffix whenever the value equals min, and the configured unit string otherwise.

Source

pub fn text_height(self, height: f32) -> Self

Override the intrinsic text-area height. The field is a pure leaf with no theme lookup of its own; by default it reports DEFAULT_TEXT_HEIGHT. A wrapping composite like TextInput passes the TEXT_FIELD_HEIGHT recipe constant (in crate::styles::recipe_text_input_style) minus border + padding here so the visuals line up with the rest of the form.

Wins over the line height a text_style would derive: a composite that passes both asked for this height.

Source

pub fn text_style(self, style: impl Into<TextStyleProp>) -> Self

The style the text is shaped in: its size, family and weight.

Accepts a TextStyleRole, resolved against the theme’s typography and re-resolved when the theme changes, or a fixed [TextStyle]. The global text scale multiplies the size either way, as it does for every text in the tree.

The style also sets the field’s height: unless text_height overrides it, the text area is one line of size × line_height tall, and the shaped line is centred in it. An 11 px style makes a short field, a 20 px one a tall field.

The family resolves through the app’s font registry like any other text: a family that is not registered falls back to the default face, with a warning on the console. The weight is honoured when the family has that weight (a variable face covers every weight). The style’s letter_spacing is not applied to the editable text, and its line_height sizes the field without spacing the glyphs.

Unset, the field shapes in the text engine’s default font at its default size, exactly as before this setting existed.

Source

pub fn text_alignment(self, alignment: HAlignment) -> Self

Where the text sits when it is narrower than the field.

[HAlignment::Leading] puts it at the start of the field — the left edge in a left-to-right layout, the right edge in a right-to-left one — [HAlignment::Center] in the middle and [HAlignment::Trailing] at the end. Text wider than the field scrolls horizontally to follow the caret, as an unaligned field does. The caret, a click, the selection, the IME candidate window, the touch handles and the character extents a screen reader is given all follow the placement.

Unset, the text starts at the left edge whatever the layout direction, as it always has.

Source

pub fn text_color(self, color: impl Into<ColorProp>) -> Self

The colour of the text and of the caret.

Accepts a Color, a theme role, a Signal<Color> or a Signal<TextRole>, resolved against the theme every time the field paints, so a role follows the theme and a signal repaints the field when it changes. A disabled field paints the theme’s disabled text colour whatever is set here, unless the colour is wrapped in [ColorProp::undimmed].

A different colour at rest and while editing is a signal of the field’s focus, which handle exposes before the field is built:

ⓘ
let field = TextInputField::new(text);
let focused = field.handle().focused_signal();
let field = field.text_color(focused.map(|f| {
    if *f { TextRole::Primary } else { TextRole::Secondary }
}));

Unset, the text is the theme’s primary text colour.

Source

pub fn interaction_signal(self, signal: Signal<InteractionState>) -> Self

Bind an externally-owned InteractionState signal. The field writes Focused on focus gain and Idle on loss; other states (Hovered, Pressed, Disabled) are the composite’s responsibility. When unset, the field owns a private signal that observers can still read via interaction, but composites that drive a focus ring or border color usually want to push their own.

Source

pub fn input_mask(self, mask: impl AsRef<str>) -> Self

Set an input mask (Qt grammar). Constrains accepted characters per position, auto-derives the empty-state template (__/__/____ for 99/99/9999), and routes typed chars through the mask’s class filter.

Composes with char_filter: a char must pass both the mask’s per-position class AND the user’s char_filter to be accepted.

On parse error (only the trailing-backslash case in practice), the mask is silently dropped — the field falls back to its no-mask behaviour rather than panicking.

Source

pub fn mask_placeholder(self, c: char) -> Self

Override the visible character used for unfilled editable mask positions. Default: the TEXT_FIELD_MASK_PLACEHOLDER_CHAR recipe constant (in crate::styles::recipe_text_input_style, _).

Source

pub fn validator(self, f: impl Fn(&str) -> ValidationOutcome + 'static) -> Self

Install a validator. The closure runs on every commit (Enter, Tab-out, focus loss) and returns a ValidationOutcome that drives validation_feedback_signal.

Does not run per-keystroke — that’s char_filter’s job. Mixing per-keystroke text rewriting with validation produces caret-jump bugs and is explicitly out of scope.

Source

pub fn secure(self, echo_mode: EchoMode) -> Self

Turn this into a secure (password) field with the given EchoMode. Masking happens at the text-engine layer (one echo glyph per source char), so the plaintext never reaches the shaper or glyph atlas while masked, and caret / selection / hit-test stay correct. Also defaults allow_copy to false and declares the focused node an ImePurpose::Password surface — the OS IME stays enabled so non-Latin passwords can still be composed, with the preedit masked on screen and hidden from AT. Pair with revealed for a reveal toggle.

Source

pub fn input_purpose(self, purpose: InputPurpose) -> Self

Declare the field’s semantic InputPurpose (WCAG 1.3.5), which selects a specialised AccessKit role (EmailInput, PhoneNumberInput, …) so screen readers announce the field’s kind. Ignored while secure (the password role wins). Does not change IME behaviour — winit’s ImePurpose has no email/number/url variants — nor drive OS autofill, which AccessKit cannot express (see docs/a11y/a11y_issues.md).

Source

pub fn active_descendant(self, active: Signal<Option<WidgetId>>) -> Self

Publish active_descendant pointing at the row a separate list is currently highlighting — the ARIA combobox pattern.

Keyboard focus stays in this field while arrow keys move a highlight through a listbox elsewhere in the tree (a command palette, a type-ahead picker, a suggestion popup). Assistive technology follows the focused node’s active descendant, so the announcement has to be published here, on the node that actually holds focus — not on the composite ancestor that owns the list. Without it the arrow keys move a highlight that is announced to nobody.

Bound at AccessibilityOnly, so moving the highlight re-walks the AT tree without a rebuild or a repaint. Pair with controls.

Source

pub fn controls(self, listbox: Signal<Option<WidgetId>>) -> Self

Publish a controls relation to the listbox this field drives, so an AT client can navigate from the input to the list it is filtering. The companion of active_descendant.

Source

pub fn echo_char(self, c: char) -> Self

Override the masking glyph (default '•', U+2022). Any uniform-width character works; the engine emits exactly one per source char.

Source

pub fn revealed(self, revealed: Signal<bool>) -> Self

Bind the reveal toggle. When the signal is true the field shows plaintext regardless of EchoMode; when false it masks. Shared with the eye IconButton::visibility_toggle.

Source

pub fn at_reveal_policy(self, policy: AtRevealPolicy) -> Self

How a revealed secure field reports to assistive tech. Default AtRevealPolicy::SwapRole.

Source

pub fn allow_copy(self, allow: bool) -> Self

Permit (or forbid) copy / cut. Plain fields default true; secure flips the default to false. Even when false, copy is allowed while the field is revealed.

Source

pub fn validation_feedback_signal(&self) -> Signal<ValidationFeedback>

Reactive handle on the published ValidationFeedback state. Composites bind to this to render the inline feedback strip below the field. Always present; reads Pristine until the first commit (or forever if no validator is installed).

Source

pub fn text(&self) -> Signal<String>

The Signal<String> this field is bound to.

Source

pub fn share_handle(self, handle: &TextFieldHandle) -> Self

Adopt an existing handle instead of minting one.

For a composing widget — TextInput wraps this field — that must hand out a handle of its own before it builds the field it will delegate to. Sharing the slot and the focus signal makes the wrapper’s handle and the field’s the same handle, rather than two that agree by accident.

Source

pub fn handle(&self) -> TextFieldHandle

A live handle on this field, valid before and after build.

The counterpart of RichTextEditor::handle, and the reason it exists: an application that routes Undo, Cut, Copy, Paste and Select All to “whichever text surface holds the caret” has to be able to drive every such surface, not only the rich editors. Without this, a menu built for those commands can only grey them out over a rename field or a search box while the field’s own key handling still works — a menu that lies about what the keyboard can do.

Like caret_setter, the handle reaches its state through the slot the widget late-populates, so it may be taken while the tree is being described and used once it is live.

Source

pub fn interaction(&self) -> Signal<InteractionState>

The interaction signal this field writes on focus changes. Call before inserting the field into the tree.

Source

pub fn caret_position(&self) -> Signal<usize>

Reactive caret position in the field’s text (in usize char offsets). Updates after every keyboard or pointer action that moves the cursor. Used by composing widgets that need to know where the caret is — e.g. DateEdit reads this to figure out which date segment Up/Down should step.

Source

pub fn caret_setter(&self) -> Rc<dyn Fn(usize)>

Returns a callable that programmatically sets the caret position (in char offsets) on the field. Capture this on the builder BEFORE ctx.add(...) consumes the field; call it after a programmatic text rewrite to restore the caret to the right column instead of leaving it at the document end (the default behaviour of cursor.insert_text).

The returned closure becomes a no-op until build() runs; after build it walks the field’s inner state and moves the document cursor to position, clamped to the document length. Used by DateEdit / TimeEdit segment-stepping to keep the caret within its current segment after Up/Down.

Trait Implementations§

Source§

impl Debug for TextInputField

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Widget for TextInputField

Source§

fn as_any(&self) -> Option<&dyn Any>

Downcast hook. Default implementation returns None; concrete widgets override with Some(self) when they want to expose their concrete type to test-level introspection or reflection. The trait already bounds on std::any::Any so concrete types satisfy the 'static requirement.
Source§

fn build(&mut self, ctx: &mut BuildContext<'_>) -> Vec<WidgetId>

Compose child widgets. Called once after the widget is placed in the arena, and again whenever the widget is marked for rebuild — a BindingLevel::Rebuild binding, rebuild_single_widget, or a density switch. A theme or locale switch does not rebuild: set_theme and set_locale mark layout + paint dirty and leave the built subtree standing, so anything derived from the theme or the locale must be read per pass or bound to a signal rather than captured here. Takes &mut self — store child IDs, signal handles, any state needed later. Returns the list of root child IDs (empty for leaf widgets).
Source§

fn layout_response( &self, proposal: SizeProposal, ctx: &LayoutContext<'_>, ) -> LayoutResponse

Respond to the parent’s size proposal with this widget’s wanted size, grow/shrink weights, and compression floor (see [LayoutResponse]). Read more
Source§

fn place_children( &self, bounds: Rect, _proposal: SizeProposal, _children: &mut [WidgetPlacement], ctx: &LayoutContext<'_>, )

Position children within the allocated bounds. Read more
Source§

fn paint(&self, bounds: Rect, canvas: &mut Canvas, ctx: &PaintContext<'_>)

Draw the widget’s visual representation.
Source§

fn accessibility(&self, builder: &mut AccessNodeBuilder)

Declare this widget’s accessibility identity.
§

fn type_name(&self) -> &'static str

Concrete type name of this widget (e.g. "teksilo_widgets::button::Button"). The default implementation resolves at the impl site via std::any::type_name::<Self>(), so calls through &dyn Widget correctly dispatch to the monomorphized fn for the concrete type — getting the concrete name through the vtable without per-impl boilerplate. Read more
§

fn cacheable_layout(&self) -> bool

Whether this widget’s layout_response may be memoized by the per-pass layout cache. Defaults to true. Read more
§

fn wants_after_paint(&self) -> bool

Whether this widget wants its after_paint hook to fire each frame. Returning false (the default) saves a virtual call per widget per frame for the vast majority of widgets that don’t aggregate descendant geometry. Read more
§

fn after_paint(&self, _view: &WidgetTreeView<'_>, _ctx: &PaintContext<'_>)

Called once per frame after this widget’s subtree has finished painting. Receives a read-only view of the layout-resolved arena so a parent can read its descendants’ final bounds — e.g. TitleBar aggregates its drag region and control-button rects into a single HitRegions payload for the Windows backend’s WM_NCHITTEST. Read more
§

fn wants_post_paint(&self) -> bool

Whether this widget wants its post_paint hook to fire each frame. Returning false (the default) saves a virtual call per widget per frame for the vast majority of widgets that don’t draw a foreground over their children. Read more
§

fn post_paint( &self, _bounds: Rect, _canvas: &mut Canvas, _ctx: &PaintContext<'_>, )

Draw a foreground layer over this widget’s children. Read more
§

fn wants_descendant_redirects(&self) -> bool

Whether this widget wants the AT walker to consult its a11y_redirect_descendant hook for every descendant during AT tree emission, not just its direct arena children. Read more
§

fn culls_children(&self) -> bool

Whether this widget decides, on every layout pass, which of its children exist at all. Read more
§

fn a11y_redirect_descendant( &self, _self_id: WidgetId, _descendant: WidgetId, ) -> Option<NodeId>

Optional redirection hook for AT-tree placement of a child. Read more
§

fn accessible_title_hint(&self) -> Option<String>

Suggest an accessible title to an enclosing container that wraps this widget as content — typically a modal / dialog shell that wants to propagate the inner content’s visible title as the shell’s own accessible name. Read more
§

fn accessible_title_node(&self) -> Option<WidgetId>

The widget that paints this one’s title, when it has one. Read more
§

fn initial_focus_hint(&self) -> Option<WidgetId>

Optional hint that directs initial focus to a specific descendant when this widget is the root of a deferred-built modal surface. Read more
§

fn accessibility_proxy(&self) -> Option<WidgetId>

The descendant whose accessibility node stands for this widget. Read more
§

fn context_menu_key_target(&self) -> Option<WidgetId>

Which descendant a keyboard request for a context menu should target. Read more
§

fn children(&self) -> Vec<WidgetId>

Return the child widget IDs that this widget manages.
§

fn accessibility_children(&self) -> Option<Vec<WidgetId>>

Optional override for the child ORDER presented to assistive technology, when it must differ from the paint / z-order child order returned by children. Read more
§

fn as_any_mut(&mut self) -> Option<&mut (dyn Any + 'static)>

Mutable counterpart of as_any. Default returns None; widgets that want to expose mutable state to tests (e.g. so a test can mutate a Scene inside a SceneView post-layout) override with Some(self). Should follow the same opt-in pattern as as_any: only widgets that opt into & introspection should opt into &mut.
§

fn clips_children(&self) -> bool

Whether this widget clips its children to its bounds.
§

fn focus_reveal_rect(&self, _bounds: Rect) -> Option<Rect>

The rectangle (in absolute tree coordinates) that best represents this widget when the framework reveals it into an ancestor scroll area on focus gain. Returning None (the default) reveals the widget’s whole bounds — correct for most controls. Read more
§

fn hit_shape(&self, _local_point: Point, _bounds: Rect) -> bool

Whether the point lies inside this widget’s actual shape, not just its rectangular bounds. Consulted by hit-testing right after the bounds check: returning false for a point that is inside the bounding box makes the widget transparent to the click there, so it falls through to whatever sibling is painted underneath (the same machinery as a fully pass-through node, but shape-aware). Read more
§

fn accepts_child_hit(&self, _child: WidgetId, _point: Point) -> bool

Veto a hit on one of this widget’s direct children, per point. Read more
§

fn hit_outset(&self, _kind: PointerKind, _tokens: &InputTokens) -> EdgeInsets

How far outside its own bounds this widget still absorbs a press, per edge, for the pointer that is asking. Read more
§

fn hit_slop(&self, _kind: PointerKind, _tokens: &InputTokens) -> Option<HitSlop>

This widget’s own say in the miss-only slop pass, overriding the density default for its node. Read more
§

fn hit_distance(&self, local_point: Point, bounds: Rect) -> Option<f32>

How far a missed press is from this widget’s actual silhouette, in the widget’s own bounds space. Read more
§

fn target_regions(&self, _bounds: Rect) -> Vec<TargetRegion>

The interactive sub-regions this widget paints inside its own single node — a scroll bar’s thumb, a slider’s knob, a header cell’s filter affordance. Read more
§

fn preserves_children_on_rebuild(&self) -> bool

How rebuild_single_widget treats this widget’s existing children when re-running its build(). Read more
§

fn tooltip_has_content(&self) -> bool

Whether this widget, used as tooltip content, currently has anything worth showing. Read more
§

fn declare_shortcuts(&self) -> Vec<Shortcut>

Declare the rebindable keyboard shortcuts this widget exposes, without installing handlers. The framework calls this at arena insertion time (before build()) and at certain lazy boundaries (e.g. Switcher walks declarations on its not-yet-mounted Pending slots), so settings UIs and the ShortcutRegistry see the keystrokes the moment the owning container mounts — even if build() hasn’t run. Read more
§

fn take_handler_set(&mut self) -> Option<HandlerSet>

Extract attached handler set from a WidgetWithHandlers wrapper. Called during arena insertion to transfer handlers to the WidgetNode. Default: returns None (no attached handlers).

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<T> Downcast for T
where T: Any,

§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert 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>

Convert 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)

Convert &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)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
§

impl<T> Downcast<T> for T

§

fn downcast(&self) -> &T

§

impl<T> ErasedDestructor for T
where T: 'static,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self> ⓘ

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
where F: FnOnce(&Self) -> bool,

Converts 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<W> IntoTeksiChild for W
where W: Widget + 'static,

§

fn into_pending(self) -> PendingChild

§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<T> Upcast<T> for T

§

fn upcast(&self) -> Option<&T>

§

impl<W> WidgetBuilder for W
where W: Widget + 'static,

§

fn on_tap( self, f: impl FnMut(&TapEvent, &mut EventContext<'_>) + 'static, ) -> WidgetWithHandlers<Self>

§

fn on_double_tap( self, f: impl FnMut(&TapEvent, &mut EventContext<'_>) + 'static, ) -> WidgetWithHandlers<Self>

§

fn on_triple_tap( self, f: impl FnMut(&TapEvent, &mut EventContext<'_>) + 'static, ) -> WidgetWithHandlers<Self>

§

fn on_long_press( self, f: impl FnMut(&TapEvent, &mut EventContext<'_>) + 'static, ) -> WidgetWithHandlers<Self>

§

fn accept_tap_buttons( self, mask: impl Into<ButtonMask>, ) -> WidgetWithHandlers<Self>

Restrict (or extend) the set of pointer buttons that fire on_tap. Default is [ButtonMask::PRIMARY]. Read more
§

fn accept_double_tap_buttons( self, mask: impl Into<ButtonMask>, ) -> WidgetWithHandlers<Self>

Restrict (or extend) the set of pointer buttons that fire on_double_tap. Default [ButtonMask::PRIMARY]. Read more
§

fn accept_triple_tap_buttons( self, mask: impl Into<ButtonMask>, ) -> WidgetWithHandlers<Self>

Restrict (or extend) the set of pointer buttons that fire on_triple_tap. Default [ButtonMask::PRIMARY]. Read more
§

fn accept_long_press_buttons( self, mask: impl Into<ButtonMask>, ) -> WidgetWithHandlers<Self>

Restrict (or extend) the set of pointer buttons that fire on_long_press. Default [ButtonMask::PRIMARY]. Read more
§

fn on_drag( self, f: impl FnMut(DragPhase, &mut EventContext<'_>) + 'static, ) -> WidgetWithHandlers<Self>

§

fn on_swipe( self, f: impl FnMut(SwipeDirection, f32, &mut EventContext<'_>) + 'static, ) -> WidgetWithHandlers<Self>

§

fn on_pinch( self, f: impl FnMut(PinchPhase, &mut EventContext<'_>) + 'static, ) -> WidgetWithHandlers<Self>

§

fn on_focus( self, f: impl FnMut(bool, &mut EventContext<'_>) + 'static, ) -> WidgetWithHandlers<Self>

§

fn on_key( self, f: impl FnMut(&WidgetEvent, &mut EventContext<'_>) -> EventResponse + 'static, ) -> WidgetWithHandlers<Self>

§

fn on_key_preview( self, f: impl FnMut(&WidgetEvent, &mut EventContext<'_>) -> EventResponse + 'static, ) -> WidgetWithHandlers<Self>

Strict-ancestor key preview. See [HandlerSet::on_key_preview].
§

fn on_pointer_event( self, f: impl FnMut(&WidgetEvent, &mut EventContext<'_>) -> EventResponse + 'static, ) -> WidgetWithHandlers<Self>

§

fn on_hover( self, f: impl FnMut(bool, &mut EventContext<'_>) + 'static, ) -> WidgetWithHandlers<Self>

§

fn on_scroll( self, f: impl FnMut(&WidgetEvent, &mut EventContext<'_>) -> EventResponse + 'static, ) -> WidgetWithHandlers<Self>

§

fn on_access_action( self, f: impl FnMut(Action, &mut EventContext<'_>) -> EventResponse + 'static, ) -> WidgetWithHandlers<Self>

§

fn focusable(self, focusable: bool) -> WidgetWithHandlers<Self>

§

fn tab_index(self, index: i32) -> WidgetWithHandlers<Self>

§

fn cursor(self, cursor: CursorIcon) -> WidgetWithHandlers<Self>

§

fn clips_children_on(self, clips: bool) -> WidgetWithHandlers<Self>

§

fn ime_input(self, ctx: ImeContext) -> WidgetWithHandlers<Self>

Declare this node a text-input surface, enabling the OS input method (with ctx’s purpose) while it is focused. See [crate::ime].
§

fn event_pass_through(self, pass_through: bool) -> WidgetWithHandlers<Self>

Make the widget invisible to pointer hit-testing. See [HandlerSet::event_pass_through].
§

fn gesture_dead_zone(self, dead_zone: bool) -> WidgetWithHandlers<Self>

Mark this widget’s subtree a gesture dead zone. See [HandlerSet::gesture_dead_zone].
§

fn long_press_role(self, role: LongPressRole) -> WidgetWithHandlers<Self>

Select what a hold on this widget’s subtree means. See [HandlerSet::long_press_role].
§

fn touch_action(self, action: TouchAction) -> WidgetWithHandlers<Self>

Override what a direct pointer may do to this widget’s subtree. See [HandlerSet::touch_action].
§

fn scroll_container(self, axes: PanAxes) -> WidgetWithHandlers<Self>

Declare this widget a pan surface on axes, kinetic, direct pointers only. See [HandlerSet::scroll_container].
§

fn pan_claim(self, claim: PanClaim) -> WidgetWithHandlers<Self>

Declare this widget a pan surface with an explicit [PanClaim]. See [HandlerSet::pan_claim].
§

fn overscroll_behavior( self, behavior: OverscrollBehavior, ) -> WidgetWithHandlers<Self>

Whether this widget absorbs a boundary scroll or chains it outward. See [HandlerSet::overscroll_behavior].
§

fn drag_activation(self, activation: DragActivation) -> WidgetWithHandlers<Self>

Declare when a drag on this widget may begin relative to the press that starts it. See [HandlerSet::drag_activation].
§

fn multi_contact(self, policy: MultiContact) -> WidgetWithHandlers<Self>

Declare how many simultaneous contacts this widget serves. Default [MultiContact::First] — the second finger on a single-contact control is terminated there rather than reaching an ancestor.
§

fn keyboard_capture(self, capture: bool) -> WidgetWithHandlers<Self>

Mark this widget a keyboard capture surface (terminals, game viewports): while focused, KeyDowns bypass shortcut resolution. See [HandlerSet::keyboard_capture].
§

fn hit_transparent(self, transparent: bool) -> WidgetWithHandlers<Self>

Make this widget and its whole subtree invisible to pointer hit-testing (decorative overlays). See [HandlerSet::hit_transparent].
§

fn hit_slop(self, slop: HitSlop) -> WidgetWithHandlers<Self>

Override the miss-only hit slop for this node. See [HandlerSet::hit_slop].
§

fn no_hit_slop(self) -> WidgetWithHandlers<Self>

Take this node out of both hit-widening mechanisms — no slop outset and no Widget::hit_outset. See [HandlerSet::no_hit_slop].
§

fn context_menu( self, factory: impl Fn(Point, &mut EventContext<'_>) -> Option<Box<dyn Widget>> + 'static, ) -> WidgetWithHandlers<Self>

Set a context-menu factory. See [HandlerSet::context_menu] for the full contract.
§

fn focus_within(self, signal: Signal<bool>) -> WidgetWithHandlers<Self>

Bind a Signal<bool> the framework writes when a strict descendant has focus. See [HandlerSet::focus_within].
§

fn hover_within(self, signal: Signal<bool>) -> WidgetWithHandlers<Self>

Bind a Signal<bool> the framework writes when a strict descendant is hovered. See [HandlerSet::hover_within].
§

fn visible_when(self, state: impl Into<Prop<bool>>) -> WidgetWithHandlers<Self>

Bind this node’s visibility (bool / Signal<bool> / Prop<bool>) as a builder property, so teksu! can write visible_when: sig. Equivalent to ctx.visible_when(id, ..). See [HandlerSet::visible_when].
§

fn on_drag_hover( self, f: impl FnMut(&DragPayload, Point, &mut EventContext<'_>) -> DropFeedback + 'static, ) -> WidgetWithHandlers<Self>

§

fn on_drag_leave( self, f: impl FnMut(&mut EventContext<'_>) + 'static, ) -> WidgetWithHandlers<Self>

§

fn on_drag_tick( self, f: impl FnMut(Point, &mut EventContext<'_>) + 'static, ) -> WidgetWithHandlers<Self>

§

fn on_pointer_cancel( self, f: impl FnMut(&PointerInfo, CancelReason, &mut EventContext<'_>) + 'static, ) -> WidgetWithHandlers<Self>

Attach a pointer-cancel handler. See [HandlerSet::on_pointer_cancel].
§

fn on_drop( self, f: impl FnMut(DragPayload, Point, &mut EventContext<'_>) -> bool + 'static, ) -> WidgetWithHandlers<Self>

§

fn on_drag_ended( self, f: impl FnMut(DropOutcome, &mut EventContext<'_>) + 'static, ) -> WidgetWithHandlers<Self>

Set the drag-ended handler on a drag source. See [HandlerSet::on_drag_ended].
§

fn access_label( self, label: impl Into<Prop<String>>, ) -> WidgetWithHandlers<Self>

§

fn access_description( self, description: impl Into<Prop<String>>, ) -> WidgetWithHandlers<Self>

§

fn access_hint(self, hint: impl Into<Prop<String>>) -> WidgetWithHandlers<Self>

§

fn access_value( self, value: impl Into<Prop<String>>, ) -> WidgetWithHandlers<Self>

§

fn access_role(self, role: Role) -> WidgetWithHandlers<Self>

§

fn access_hidden( self, hidden: impl Into<Prop<bool>>, ) -> WidgetWithHandlers<Self>

§

fn access_disabled(self, disabled: bool) -> WidgetWithHandlers<Self>

§

fn access_identifier(self, id: impl Into<String>) -> WidgetWithHandlers<Self>

§

fn access_controls(self, target: WidgetId) -> WidgetWithHandlers<Self>

§

fn access_described_by(self, target: WidgetId) -> WidgetWithHandlers<Self>

§

fn access_labelled_by(self, target: WidgetId) -> WidgetWithHandlers<Self>

§

fn access_live(self, mode: Live) -> WidgetWithHandlers<Self>

§

fn access_current(self, current: AriaCurrent) -> WidgetWithHandlers<Self>

§

fn access_shortcut_literal( self, shortcut: impl Into<String>, ) -> WidgetWithHandlers<Self>

§

fn access_shortcut_id(self, id: impl Into<String>) -> WidgetWithHandlers<Self>

§

fn access_has_popup(self, kind: HasPopup) -> WidgetWithHandlers<Self>

§

fn access_orientation( self, orientation: Orientation, ) -> WidgetWithHandlers<Self>

§

fn access_exclude_subtree(self) -> WidgetWithHandlers<Self>

§

fn access_merge_subtree(self) -> WidgetWithHandlers<Self>

§

fn access_subtree(self, mode: AccessSubtreeMode) -> WidgetWithHandlers<Self>

§

fn access_numeric_value(self, value: f64) -> WidgetWithHandlers<Self>

§

fn access_numeric_range(self, min: f64, max: f64) -> WidgetWithHandlers<Self>

§

fn access_numeric_step(self, step: f64) -> WidgetWithHandlers<Self>

§

fn access_action<F>( self, action: Action, handler: F, ) -> WidgetWithHandlers<Self>
where F: FnMut(&mut EventContext<'_>) + 'static,

§

fn access_remove_action(self, action: Action) -> WidgetWithHandlers<Self>

§

fn access_custom_action<F>( self, label: impl Into<Prop<String>>, handler: F, ) -> WidgetWithHandlers<Self>
where F: FnMut(&mut EventContext<'_>) + 'static,

§

fn access_customize<F>(self, f: F) -> WidgetWithHandlers<Self>
where F: Fn(&mut AccessNodeBuilder) + 'static,

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more