pub struct TextField<Msg = Callback> { /* private fields */ }Expand description
A single-line text input field, with optional form decoration (label, hint,
helper text, error). Validity stays decided by the application (a pure
function of the state); the field only displays its result through error.
Implementations§
Source§impl TextField<Callback>
impl TextField<Callback>
Sourcepub fn controller(self, controller: &TextEditingController) -> Self
pub fn controller(self, controller: &TextEditingController) -> Self
Drives the field from controller: it shows the controller’s text, and what is typed
in it is written to the controller.
This sets the field’s text and its on_input, so it replaces both. To do more when
the text changes, listen to the controller.
Source§impl<Msg> TextField<Msg>
impl<Msg> TextField<Msg>
Sourcepub fn outlined(self) -> Self
pub fn outlined(self) -> Self
Outlined: a box the caller can see all the way round, the floating label notching its top border. The default.
Sourcepub fn borderless(self) -> Self
pub fn borderless(self) -> Self
Filled: a tinted container with a single line under it, the label floating
inside the box rather than on its edge.
No container: no fill, no box, no line — the reference’s InputBorder.none.
For a field inside something that is already a container. See
TextFieldVariant::None.
Sourcepub fn filled(self) -> Self
pub fn filled(self) -> Self
The filled variant: a tinted container with a single line under it, the label
floating inside. See TextFieldVariant::Filled.
Sourcepub fn variant(self, variant: TextFieldVariant) -> Self
pub fn variant(self, variant: TextFieldVariant) -> Self
Chooses the variant directly, for a caller holding one in a variable.
Sourcepub fn enabled(self, enabled: bool) -> Self
pub fn enabled(self, enabled: bool) -> Self
Greys the field out and makes it inert. A disabled field still shows its value: the reference dims it rather than hiding it, since it is usually the answer to why the rest of a form is the way it is.
Sourcepub fn style(self, style: TextFieldStyle) -> Self
pub fn style(self, style: TextFieldStyle) -> Self
Overrides part of the styling for this field alone. Anything left None falls to
the theme’s TextFieldTheme, then to the
framework’s defaults.
Sourcepub fn dense(self, dense: bool) -> Self
pub fn dense(self, dense: bool) -> Self
Tightens the field: the reference’s isDense, which trades the comfortable
padding for a control that fits inside a table row. The shape, the label and the
border are unchanged — only the room around the content.
Sourcepub fn autofill(self, hints: impl IntoIterator<Item = AutofillHint>) -> Self
pub fn autofill(self, hints: impl IntoIterator<Item = AutofillHint>) -> Self
What the field is for — a username, a new password, a one-time code, a postal
code — so that the platform’s autofill service can fill it, and save it once the
form is submitted. See AutofillHint.
A list, most telling first: a sign-in box that takes an email address is both
[AutofillHint::Username, AutofillHint::Email]. The fields of one form belong in
an AutofillGroup, or a password is shown to the service
with no username to save it under.
TextField::new(&app.code).autofill([AutofillHint::OneTimeCode])Sourcepub fn multiline(self) -> Self
pub fn multiline(self) -> Self
Switches the field to multi-line: Enter inserts a line break (instead of
submitting), and the box shows rows lines (see rows).
Sourcepub fn rows(self, rows: u16) -> Self
pub fn rows(self, rows: u16) -> Self
Number of visible lines in multi-line mode (at least 1). Implies
multiline.
Sourcepub fn max_lines(self, lines: impl Into<Option<u16>>) -> Self
pub fn max_lines(self, lines: impl Into<Option<u16>>) -> Self
The most lines the box grows to as the value wraps, then scrolls — the
reference’s maxLines (milestone 657). None grows without a limit. Given alone, the
box starts at one line, as the reference’s does; 1 is a single-line field.
Sourcepub fn obscure(self, obscure: bool) -> Self
pub fn obscure(self, obscure: bool) -> Self
Masks the value (a password field): every character becomes a dot. Editing stays normal; only the display is masked.
It also changes what the software keyboard is told, unless
keyboard_type says otherwise: a masked field is a
Password, which is what stops the keyboard learning
what is typed into it. The dots are drawn by us and tell the keyboard nothing.
Sourcepub fn obscuring_character(self, character: char) -> Self
pub fn obscuring_character(self, character: char) -> Self
What each character of a masked value shows as — the reference’s
obscuringCharacter. A dot unless told.
Sourcepub fn cursor_color(self, color: Color) -> Self
pub fn cursor_color(self, color: Color) -> Self
The caret’s colour (milestone 659). Unset, the theme’s, then the scheme’s primary.
Sourcepub fn cursor_error_color(self, color: Color) -> Self
pub fn cursor_error_color(self, color: Color) -> Self
The caret’s colour while an error is showing. Unset, the error colour.
Sourcepub fn cursor_width(self, width: f32) -> Self
pub fn cursor_width(self, width: f32) -> Self
The caret’s width, in logical pixels; the reference’s 2 unless told.
Sourcepub fn cursor_height(self, height: f32) -> Self
pub fn cursor_height(self, height: f32) -> Self
The caret’s height, centred on the line; the line’s own unless told.
Sourcepub fn cursor_radius(self, radius: f32) -> Self
pub fn cursor_radius(self, radius: f32) -> Self
The radius of the caret’s corners. Unset, 2 on Apple’s platforms and square elsewhere, as the reference’s are.
Sourcepub fn show_cursor(self, show: bool) -> Self
pub fn show_cursor(self, show: bool) -> Self
Whether the caret shows while the field is focused — the reference’s showCursor.
A field that hides it still takes keys and selections.
Sourcepub fn autofocus(self, autofocus: bool) -> Self
pub fn autofocus(self, autofocus: bool) -> Self
Takes the keyboard’s focus when the field appears — the reference’s autofocus: the
field a screen exists to type into. Where the focus came from is given back when it
goes (milestone 605).
Sourcepub fn text_align(self, align: TextAlign) -> Self
pub fn text_align(self, align: TextAlign) -> Self
Where the text sits inside the field: an amount to the right, a code centred.
Start — the default — follows the reading direction, so a
field is left-aligned in English and right-aligned in Arabic.
Left and Right do not: a column of
figures wants the same edge whatever the prose around it is doing.
Single-line fields only. A multi-line one stays at the start, and that is a boundary rather than an oversight: aligning wrapped text means moving each line by its own width, and the caret and the click would then have to be told about an offset that differs line by line. That belongs inside the text layout, where the caret and the hit test already live, and not in a widget nudging a block sideways behind their backs.
Sourcepub fn keyboard_type(self, keyboard: KeyboardType) -> Self
pub fn keyboard_type(self, keyboard: KeyboardType) -> Self
Which keys the software keyboard should offer — a phone keypad, an email address, a number.
Untold, it is worked out from the field: a masked field is a secret, a multi-line one takes newlines, and anything else is ordinary text.
Sourcepub fn action(self, action: TextInputAction) -> Self
pub fn action(self, action: TextInputAction) -> Self
What the keyboard’s action key does, and what it says — Next in a form, Search over a query, Send on a message.
Untold, a multi-line field takes a newline and every other field says Done.
Sourcepub fn prefix_icon(self, icon: IconData) -> Self
pub fn prefix_icon(self, icon: IconData) -> Self
Decorative icon on the left inside the field.
Sourcepub fn suffix_icon(self, icon: IconData) -> Self
pub fn suffix_icon(self, icon: IconData) -> Self
Decorative icon on the right inside the field.
Sourcepub fn icon(self, icon: IconData) -> Self
pub fn icon(self, icon: IconData) -> Self
An icon outside the field, before its box — the reference’s icon: the box, its
label and the line under it all start after it. It is 24 pixels (18 dense) with 16
before the box, in the icon colour.
Sourcepub fn prefix_text(self, text: impl Into<String>) -> Self
pub fn prefix_text(self, text: impl Into<String>) -> Self
Text just before the value, in the hint’s style — a currency sign, a country
code, https:// — the reference’s prefixText. Its room is kept whether it shows or
not, and it shows while the label is floated: once the field is focused or holds
something, at once if the label always floats.
Sourcepub fn suffix_text(self, text: impl Into<String>) -> Self
pub fn suffix_text(self, text: impl Into<String>) -> Self
Text just after the value, in the hint’s style — a unit, a domain — the
reference’s suffixText. Shown as prefix_text is.
Sourcepub fn floating_label_behavior(self, behavior: FloatingLabelBehavior) -> Self
pub fn floating_label_behavior(self, behavior: FloatingLabelBehavior) -> Self
When the label floats above the value. Unset, the theme’s, then
FloatingLabelBehavior::Auto.
Sourcepub fn floating_label_alignment(self, alignment: FloatingLabelAlignment) -> Self
pub fn floating_label_alignment(self, alignment: FloatingLabelAlignment) -> Self
Where the floated label sits along the field’s top. Unset, the theme’s, then
FloatingLabelAlignment::Start.
Sourcepub fn counter_text(self, text: impl Into<String>) -> Self
pub fn counter_text(self, text: impl Into<String>) -> Self
What the counter under the field says, in place of the count a
max_length puts there — the reference’s counterText. An empty
text hides the counter, limit or not.
Sourcepub fn on_suffix(self, message: impl Into<Msg>) -> Self
pub fn on_suffix(self, message: impl Into<Msg>) -> Self
Makes the suffix icon clickable: a click on it emits message (a clear button,
a reveal-password button…) instead of placing the caret. Implies a suffix icon
(to be set through suffix_icon).
Sourcepub fn on_tap_outside(self, message: impl Into<Msg>) -> Self
pub fn on_tap_outside(self, message: impl Into<Msg>) -> Self
A message for a press outside the field while it is focused — the reference’s
onTapOutside (milestone 660), sent before the press moves the focus: a form that
saves a draft, or closes a suggestion list, when the user taps away.
Sourcepub fn placeholder(self, placeholder: impl Into<String>) -> Self
pub fn placeholder(self, placeholder: impl Into<String>) -> Self
Hint displayed inside the field while it is empty — and, for a field with no
label, the name a screen reader gives it.
Sourcepub fn helper(self, helper: impl Into<String>) -> Self
pub fn helper(self, helper: impl Into<String>) -> Self
Helper text below the field (replaced by the error, if present).
Sourcepub fn error(self, message: impl Into<String>) -> Self
pub fn error(self, message: impl Into<String>) -> Self
Marks the field in error: red border and label, message displayed below
the field. Chain it only when the application’s validation fails.
Sourcepub fn max_length(self, max: usize) -> Self
pub fn max_length(self, max: usize) -> Self
The most characters the field will hold.
It is enforced, as the reference’s default is: a keystroke past the limit does not reach the value, and neither does the tail of a paste that would cross it — the part that fits still lands, because dropping a whole paste for being one character too long loses work the user can see they had.
It also puts a counter — 5/10 — at the end of the line below the box, where the
reference puts one, and reserves that line even when there is no helper text to
share it with.
The limit is in characters, not bytes: “é” is one, and a name in an alphabet that is not Latin is counted the way its writer would count it.
Sourcepub fn input_filter(
self,
filter: impl Fn(char) -> Option<char> + 'static,
) -> Self
pub fn input_filter( self, filter: impl Fn(char) -> Option<char> + 'static, ) -> Self
What each typed character becomes before it reaches the value: None drops it,
Some(c) puts c in instead of what was typed.
The reference’s inputFormatters reshape the whole value after every
keystroke, which buys grouping (spaces every four digits of a card number) and
costs a caret: the formatter has to say where it went, and getting that wrong
puts the cursor in the middle of a group the reader did not touch. A filter that
works one character at a time cannot group, and cannot lose the caret either
— a dropped character simply never arrives, and a substituted one takes the same
place. That covers digits-only, letters-only, no-spaces and forced case, which is
nearly every field that filters at all.
It applies to what is typed or pasted, and a paste keeps whatever it can
rather than being refused whole — the same rule
max_length follows, for the same reason.
A value the caller supplied is left alone: it is the application’s state, not something typed, and rewriting it would be editing a value nobody edited.
TextField::new(&app.code).input_filter(|c| c.to_uppercase().next())
TextField::new(&app.tag).input_filter(|c| (!c.is_whitespace()).then_some(c))Sourcepub fn digits_only(self) -> Self
pub fn digits_only(self) -> Self
Digits, and nothing else.
It also asks for a number keypad, unless one was named already: a field that refuses everything but digits and then opens a QWERTY keyboard is a field whose keys mostly do nothing. Naming a keyboard before or after this leaves that choice standing, so the two builders can be written in either order.
Sourcepub fn capitalization(self, capitalization: Capitalization) -> Self
pub fn capitalization(self, capitalization: Capitalization) -> Self
Which letters the software keyboard capitalises by itself.
A hint: it is what the keyboard does to what it sends, and a reader who turns
it off still types what they meant to. A field that must hold capitals wants
input_filter as well, which works whatever the
keyboard does and works on a desktop, where there is no keyboard to hint to.
Sourcepub fn read_only(self) -> Self
pub fn read_only(self) -> Self
A field whose value can be read, selected and copied — but not changed.
It is not enabled(false), and the difference matters.
A disabled field is greyed out and inert: out of the tab order, no caret, nothing
to select. A read-only one looks and behaves like any other field except that
typing does nothing — you can focus it, move the caret through it, select a
reference number and copy it. That is what an identifier the application generated
wants, and greying it out would suggest it is unavailable rather than fixed.
Sourcepub fn selection_toolbar(
self,
build: impl Fn(&ToolbarContext, Vec<ToolbarItem<Msg>>) -> Vec<ToolbarItem<Msg>> + 'static,
) -> Self
pub fn selection_toolbar( self, build: impl Fn(&ToolbarContext, Vec<ToolbarItem<Msg>>) -> Vec<ToolbarItem<Msg>> + 'static, ) -> Self
What the bar over a selection offers — Cut, Copy, Paste, Select all — decided by the application (milestone 568, #23).
build is handed the ToolbarContext (is something selected, is there text to
paste, is everything selected already) and the field’s default list for it, and
returns the list to show. Drop an item, reorder them, add one of the application’s own
(ToolbarItem::custom) — or return an empty list, and no bar shows at all.
use frus_widgets::{TextField, ToolbarItem};
#[derive(Clone)]
enum Msg { Translate }
// A field that never lets its text be pasted over, and offers a way to translate it.
let field: TextField<Msg> = TextField::new("Bonjour").selection_toolbar(|context, mut items| {
items.retain(|item| item.label() != "Paste");
if context.has_selection {
items.push(ToolbarItem::custom("Translate", Msg::Translate));
}
items
});The defaults already keep a secret: a masked field (obscure) is
given neither Cut nor Copy, and a read_only one neither Cut nor
Paste, so an application only has to change the list to depart from them.
Sourcepub fn on_input<R: IntoMsg<Msg>>(
self,
on_input: impl Fn(String) -> R + 'static,
) -> Self
pub fn on_input<R: IntoMsg<Msg>>( self, on_input: impl Fn(String) -> R + 'static, ) -> Self
Closure producing a message from the field’s new value.
Sourcepub fn on_submit(self, message: impl Into<Msg>) -> Self
pub fn on_submit(self, message: impl Into<Msg>) -> Self
Message emitted on submission (the Enter key), without changing the value.
Sourcepub fn announce(self, message: impl Into<String>) -> Self
pub fn announce(self, message: impl Into<String>) -> Self
Text to speak through the screen reader’s live region when Self::on_submit
fires — the field’s own counterpart to a button’s Widget::announce, which only ever fires on a click or a plain Enter and
so never sees a field’s submit (#18). Compute it from the value the caller
already has — TextField::new(draft).announce(format!("{draft} added")) — since
by the time this fires, the widget it is read from is the one built before
the keystroke, still holding what is about to be cleared.
Trait Implementations§
Source§impl<Msg: Clone + 'static> Widget<Msg> for TextField<Msg>
impl<Msg: Clone + 'static> Widget<Msg> for TextField<Msg>
Source§fn fill_axes(&self, _theme: &Theme) -> FillAxes
fn fill_axes(&self, _theme: &Theme) -> FillAxes
All the room on offer on an axis nobody sized, as the reference’s takes (milestone 590) — unless it was told to grow, which says the same thing already.
Source§fn soft_extent(&self) -> FillAxes
fn soft_extent(&self) -> FillAxes
The default size is only a default: the room replaces it wherever the layout can give the room, and it stands where the reference would have nothing to give.
Source§fn takes_typing(&self) -> bool
fn takes_typing(&self) -> bool
A field that is read-only, or that cannot be focused, takes no typing.
Source§fn measure(&self, _theme: &Theme) -> Option<MeasureFn<'_>>
fn measure(&self, _theme: &Theme) -> Option<MeasureFn<'_>>
None = size fixed by style(). Contract: must be Some if and only if
Widget::measure_key is. Read moreSource§fn measure_key(&self, _theme: &Theme) -> Option<u64>
fn measure_key(&self, _theme: &Theme) -> Option<u64>
Widget::measure depends on (text, style…),
mixed into the relayout fingerprint: without it, two different contents with
the same style would be conflated by the cache and would keep a stale
geometry. Contract: Some if and only if measure() is. Read moreSource§fn paint(&self, bounds: Rect, status: Status, theme: &Theme, scene: &mut Scene)
fn paint(&self, bounds: Rect, status: Status, theme: &Theme, scene: &mut Scene)
Source§fn positional_click(
&self,
local_x: f32,
local_y: f32,
width: f32,
_height: f32,
) -> Option<Msg>
fn positional_click( &self, local_x: f32, local_y: f32, width: f32, _height: f32, ) -> Option<Msg>
width × height box), taking
priority over on_click. For clickable sub-regions — e.g. the
suffix icon of a crate::TextField (clear / reveal) or a chart point
(milestone 221). None (the default) = no sub-region; the shell falls back to on_click.Source§fn cursor_icon(
&self,
local_x: f32,
local_y: f32,
width: f32,
_height: f32,
) -> Option<Cursor>
fn cursor_icon( &self, local_x: f32, local_y: f32, width: f32, _height: f32, ) -> Option<Cursor>
(local_x, local_y) inside
the widget’s width × height box (milestone 205): Some(Cursor::Pointer) over a clickable
sub-region (a suffix icon…), None (the default) = no opinion, the shell keeps the default
cursor. Does not affect clicking; this is purely the pointer’s appearance on hover.Source§fn on_edit(&self, edit: &mut Edit, key: &Key) -> Option<Msg>
fn on_edit(&self, edit: &mut Edit, key: &Key) -> Option<Msg>
Source§fn ime(&self) -> Ime
fn ime(&self) -> Ime
Source§fn cursor_at(
&self,
local_x: f32,
local_y: f32,
width: f32,
scroll_cursor: usize,
) -> Option<usize>
fn cursor_at( &self, local_x: f32, local_y: f32, width: f32, scroll_cursor: usize, ) -> Option<usize>
local_y picks the line in a
multi-line field (ignored on a single line). Read moreSource§fn text_metrics(
&self,
width: f32,
cursor: usize,
) -> Option<(f32, f32, f32, f32)>
fn text_metrics( &self, width: f32, cursor: usize, ) -> Option<(f32, f32, f32, f32)>
(content height, visible box height, caret top, caret height), in content
space (px). The shell uses them to register the scrollable region and to keep
the caret in view. None otherwise.Source§fn text_viewport(&self, rect: Rect) -> Option<Rect>
fn text_viewport(&self, rect: Rect) -> Option<Rect>
rect — the area where
the text scrolls, below the label. Used to place the scrollbar and the
scrollable region exactly on the box. None otherwise.Source§fn caret_vertical(
&self,
width: f32,
cursor: usize,
down: bool,
page: bool,
goal_x: Option<f32>,
) -> Option<(usize, f32)>
fn caret_vertical( &self, width: f32, cursor: usize, down: bool, page: bool, goal_x: Option<f32>, ) -> Option<(usize, f32)>
(new index, visual column used). Read moreSource§fn text_value(&self) -> Option<&str>
fn text_value(&self) -> Option<&str>
None otherwise.Source§fn replace_value(&self, value: String) -> Option<Msg>
fn replace_value(&self, value: String) -> Option<Msg>
value in this field: the one typing would have produced,
for a value the framework restores rather than the user typing it. Read moreSource§fn semantics(&self) -> Option<SemanticsProperties>
fn semantics(&self) -> Option<SemanticsProperties>
None =
no semantics of its own (a layout container — its children, though,
may have some). See frus_core::SemanticsProperties.Source§fn selected_text(&self, edit: &Edit) -> Option<String>
fn selected_text(&self, edit: &Edit) -> Option<String>
Source§fn word_at(&self, index: usize) -> Option<(usize, usize)>
fn word_at(&self, index: usize) -> Option<(usize, usize)>
(start, end) of the word around the given index (for double-click).Source§fn selection_handles(
&self,
width: f32,
edit: &Edit,
scroll_y: f32,
) -> Option<[SelectionHandle; 2]>
fn selection_handles( &self, width: f32, edit: &Edit, scroll_y: f32, ) -> Option<[SelectionHandle; 2]>
edit, start then end, for a field width
wide whose content is scrolled down by scroll_y — where they are painted, and
so where a finger takes them. None when there is no selection, or this is not
a text field.Source§fn selection_toolbar(&self, context: ToolbarContext) -> Option<&dyn Widget<Msg>>
fn selection_toolbar(&self, context: ToolbarContext) -> Option<&dyn Widget<Msg>>
crate::ToolbarItem) for context, or None when there is none to show: this is
not a text field, or the application’s list for that context is empty. Read moreSource§fn selection_anchor(
&self,
width: f32,
edit: &Edit,
scroll_y: f32,
) -> Option<Rect>
fn selection_anchor( &self, width: f32, edit: &Edit, scroll_y: f32, ) -> Option<Rect>
selection_handles it is the paint’s own geometry.Source§fn autofill_hints(&self) -> &[AutofillHint]
fn autofill_hints(&self) -> &[AutofillHint]
AutofillHint. Empty (the default) is a field that takes
no part in autofill at all. Read moreSource§fn autofocus(&self) -> bool
fn autofocus(&self) -> bool
true, a focusable widget takes the focus when it appears: a menu’s first
row when the menu opens, a field on a screen made to type into (milestone 605). Where
the focus came from is remembered, and it goes back there when this one goes.Source§fn on_tap_outside(&self) -> Option<Msg>
fn on_tap_outside(&self) -> Option<Msg>
onTapOutside: sent before the press moves the focus.Source§fn draws_own_focus(&self) -> bool
fn draws_own_focus(&self) -> bool
true, the widget draws its focus indicator itself (the driver then
does not stroke the generic ring). E.g. TextField.Source§fn announce(&self) -> Option<String>
fn announce(&self) -> Option<String>
None = nothing to announce
(the default).Source§fn opaque(&self) -> bool
fn opaque(&self) -> bool
Source§fn key(&self) -> Option<u64>
fn key(&self) -> Option<u64>
None = positional identity. See crate::Keyed.Source§fn debug_name(&self) -> &'static str
fn debug_name(&self) -> &'static str
Box, crate::Keyed…) delegate
to their content.Source§fn describes(&self) -> Option<Description>
fn describes(&self) -> Option<Description>
crate::Semantics wrapper, and nothing else
so far. Read moreSource§fn selection_text(&self) -> Option<&str>
fn selection_text(&self) -> Option<&str>
SelectionArea: a Text, and nothing that is
not made of words. The walk registers such a widget as a text stop when it is inside an
area, so that a selection can begin, end and pass through it.Source§fn selection_hit(
&self,
_local_x: f32,
_local_y: f32,
_width: f32,
) -> Option<usize>
fn selection_hit( &self, _local_x: f32, _local_y: f32, _width: f32, ) -> Option<usize>
selection_text nearest a local
position (px from the widget’s top-left corner) in a box width wide — the layout the
widget was drawn with, which is what a press is hit against.Source§fn selection_grip(
&self,
_width: f32,
_index: usize,
_start: bool,
) -> Option<SelectionHandle>
fn selection_grip( &self, _width: f32, _index: usize, _start: bool, ) -> Option<SelectionHandle>
index of this widget’s words — the
start handle when start, the end handle otherwise — in local coordinates, for a widget
width wide: where it is painted, and so where a finger takes it. None for anything
that is not a text.Source§fn area_toolbar(
&self,
_context: ToolbarContext,
) -> Option<Option<&dyn Widget<Msg>>>
fn area_toolbar( &self, _context: ToolbarContext, ) -> Option<Option<&dyn Widget<Msg>>>
SelectionArea offers over its selection, for
context, when the application has said what it holds
(SelectionArea::selection_toolbar): Some
of the bar, or Some(None) for no bar at all. None for anything else — and for an area
that was told nothing — whose texts then offer Copy and Select all.Source§fn region_toolbar(
&self,
_context: ToolbarContext,
_width: f32,
_range: (usize, usize),
) -> Option<(Rect, &dyn Widget<Msg>)>
fn region_toolbar( &self, _context: ToolbarContext, _width: f32, _range: (usize, usize), ) -> Option<(Rect, &dyn Widget<Msg>)>
range, in characters — for context, and the box it is placed against in local
coordinates, for a widget width wide. None for anything that is not a text, or when
the list for context is empty.Source§fn edit_action(&self) -> Option<EditAction>
fn edit_action(&self) -> Option<EditAction>
crate::EditAction).Source§fn shortcut_bindings(&self) -> &[(KeyStroke, Intent)]
fn shortcut_bindings(&self) -> &[(KeyStroke, Intent)]
crate::Shortcuts.Source§fn shortcut_callbacks(&self) -> &[(KeyStroke, Msg)]
fn shortcut_callbacks(&self) -> &[(KeyStroke, Msg)]
crate::CallbackShortcuts.Source§fn action_bindings(&self) -> &[(Intent, Msg)]
fn action_bindings(&self) -> &[(Intent, Msg)]
crate::Actions.Source§fn action_listeners(&self) -> &[(Intent, Msg)]
fn action_listeners(&self) -> &[(Intent, Msg)]
crate::ActionListener.Source§fn on_keystroke(&self) -> Option<Rc<dyn Fn(KeyStroke) -> Option<Msg>>>
fn on_keystroke(&self) -> Option<Rc<dyn Fn(KeyStroke) -> Option<Msg>>>
crate::KeyboardListener. None (the default) is not a listener.Source§fn on_focus_change(&self, _focused: bool) -> Option<Msg>
fn on_focus_change(&self, _focused: bool) -> Option<Msg>
onFocusChange: true when the focused widget is now this
one or inside it and was not, false the other way. The shell asks once a frame,
after the focus has moved, every widget on the two paths from the root that the move
changed, the one that lost it first.Source§fn descendants_focusable(&self) -> bool
fn descendants_focusable(&self) -> bool
false, nothing inside this subtree can take focus — the reference’s
ExcludeFocus. A dimmed panel behind a sheet is still drawn and still measured;
it simply stops being somewhere Tab can land.Source§fn focus_skip_traversal(&self) -> bool
fn focus_skip_traversal(&self) -> bool
true, this subtree’s focus stops are skipped by Tab while remaining
focusable by a click — the reference’s ExcludeFocusTraversal. The two are
separate questions: a toolbar button may be reachable with the pointer and still
not belong in the keyboard’s order.Source§fn focus_order(&self) -> Option<f32>
fn focus_order(&self) -> Option<f32>
NumericFocusOrder. None leaves them in tree order, which is where
everything sits until someone says otherwise.Source§fn focus_group(&self) -> bool
fn focus_group(&self) -> bool
true, this subtree is a traversal group: an order set inside it is
resolved among its own members and nowhere else, so a reordered dialog does not
reshuffle the page behind it.Source§fn autofill_group(&self) -> bool
fn autofill_group(&self) -> bool
true, this subtree’s fields are one form — the reference’s
AutofillGroup. A service shown a password with no username beside it has
nothing to save the pair under.Source§fn draggable(&self) -> bool
fn draggable(&self) -> bool
true, the widget responds to pointer dragging (sliders, handles).Source§fn drag_track(&self) -> DragTrack
fn drag_track(&self) -> DragTrack
draggable widget its drag lands (milestone
648): how far in from each end the travel starts, and whether it runs from the
right in a right-to-left reading direction. The fraction on_drag
and its edges are given is measured along that travel. The default is the whole
width, left to right.Source§fn on_thumb_drag(
&self,
_thumb: usize,
_moment: ThumbDrag,
_fraction: f32,
) -> Option<Msg>
fn on_thumb_drag( &self, _thumb: usize, _moment: ThumbDrag, _fraction: f32, ) -> Option<Msg>
DragMode::Thumbs track: thumb is the one the press picked, 0 for the start,
and fraction the pointer’s place along the travel. A press that has picked none
yet sends nothing.Source§fn on_drag(&self, _fraction: f32) -> Option<Msg>
fn on_drag(&self, _fraction: f32) -> Option<Msg>
fraction being the relative horizontal
position (0.0..=1.0) within the widget’s bounds.Source§fn on_drag_start(&self, _fraction: f32) -> Option<Msg>
fn on_drag_start(&self, _fraction: f32) -> Option<Msg>
Source§fn on_drag_end(&self, _fraction: f32) -> Option<Msg>
fn on_drag_end(&self, _fraction: f32) -> Option<Msg>
Source§fn on_drag_delta(&self, _dx: f32) -> Option<Msg>
fn on_drag_delta(&self, _dx: f32) -> Option<Msg>
dx is the
movement (logical px) since the last event. For handles that accumulate
(column resizing), unlike on_drag (an absolute fraction,
e.g. a slider). The shell tries it before on_drag; a widget implements
only one of the two.Source§fn hero_tag(&self) -> Option<u64>
fn hero_tag(&self) -> Option<u64>
crate::Hero.Source§fn drag_payload(&self) -> Option<u64>
fn drag_payload(&self) -> Option<u64>
crate::Draggable.Source§fn drag_needs_long_press(&self) -> bool
fn drag_needs_long_press(&self) -> bool
Source§fn drag_ghost_opacity(&self) -> f32
fn drag_ghost_opacity(&self) -> f32
Source§fn on_dropped(&self, _accepted: bool) -> Option<Msg>
fn on_dropped(&self, _accepted: bool) -> Option<Msg>
true if a target took it.Source§fn drop_zone(&self) -> bool
fn drop_zone(&self) -> bool
crate::DragTarget.Source§fn accepts_drag(&self, _payload: u64) -> bool
fn accepts_drag(&self, _payload: u64) -> bool
payload? Only asked of a drop target.Source§fn on_drop(&self, _payload: u64) -> Option<Msg>
fn on_drop(&self, _payload: u64) -> Option<Msg>
Source§fn accepts_files(&self, _paths: &[PathBuf]) -> bool
fn accepts_files(&self, _paths: &[PathBuf]) -> bool
crate::DragTarget::on_files.Source§fn on_files_dropped(&self, _paths: Vec<PathBuf>) -> Option<Msg>
fn on_files_dropped(&self, _paths: Vec<PathBuf>) -> Option<Msg>
Source§fn reorder_index(&self) -> Option<usize>
fn reorder_index(&self) -> Option<usize>
Source§fn on_reorder(&self, _to: usize) -> Option<Msg>
fn on_reorder(&self, _to: usize) -> Option<Msg>
to.
The widget knows its own index and the on_reorder(from, to) callback.Source§fn reorder_axis(&self) -> ReorderAxis
fn reorder_axis(&self) -> ReorderAxis
ReorderAxis::Horizontal): the shell
orients the drag preview (ghost + insertion indicator) accordingly. Kanban cards
return ReorderAxis::Vertical.Source§fn reorder_inserts(&self) -> bool
fn reorder_inserts(&self) -> bool
false by default, which is the table. Read moreSource§fn reorder_draggable(&self) -> bool
fn reorder_draggable(&self) -> bool
true by default for every
reorderable. A target-only slot — the drop zone at the end of a Kanban column —
returns false: a card can be dropped there, not lifted from it (otherwise the
drag would raise an empty ghost that moves nothing).Source§fn reorder_droppable(&self) -> bool
fn reorder_droppable(&self) -> bool
true by default, and the mirror image of
reorder_draggable: a source-only grip — a list row’s
drag handle — returns false. Read moreSource§fn reorder_announcement(&self, _to: usize) -> Option<String>
fn reorder_announcement(&self, _to: usize) -> Option<String>
to — the
spoken counterpart of the ghost, for someone who cannot see it land. Read moreSource§fn stack(&self) -> bool
fn stack(&self) -> bool
true, the widget is a stack: its children are superimposed layers
(the same box), rendered in order (the last one on top).Source§fn sticky_header(&self) -> bool
fn sticky_header(&self) -> bool
true, the widget is a section with a sticky header
(crate::StickyHeader): its first child is painted, and takes taps, at the top of
what is visible of the section, over the second (milestone 602).Source§fn custom_layout(&self) -> Option<CustomLayout<'_>>
fn custom_layout(&self) -> Option<CustomLayout<'_>>
crate::CustomMultiChildLayout — the function and one key per child. The children
are then laid out and placed in the walk, by the function, and not in this node’s
layout (milestone 601).Source§fn continuous(&self) -> bool
fn continuous(&self) -> bool
true, the widget animates continuously (driven by time, not by a
target): the framework keeps redrawing. E.g. CircularProgressIndicator.Source§fn repaint_boundary(&self) -> bool
fn repaint_boundary(&self) -> bool
true, this widget is a repaint boundary: its subtree is cached
(primitives + interaction maps) and reused as is as long as its geometry
and the interaction state of its descendants do not change — a widget
animating elsewhere no longer forces it to repaint.
See crate::Container::repaint_boundary and paintcache.rs.Source§fn scroll_content(&self) -> Option<&dyn Widget<Msg>>
fn scroll_content(&self) -> Option<&dyn Widget<Msg>>
Source§fn virtual_list(&self, _viewport: Size) -> Option<VirtualList<'_, Msg>>
fn virtual_list(&self, _viewport: Size) -> Option<VirtualList<'_, Msg>>
Source§fn page_view(&self) -> Option<PagedView<'_, Msg>>
fn page_view(&self) -> Option<PagedView<'_, Msg>>
Source§fn on_page_changed(&self, _page: usize) -> Option<Msg>
fn on_page_changed(&self, _page: usize) -> Option<Msg>
Source§fn on_scroll(&self, _position: ScrollPosition) -> Option<Msg>
fn on_scroll(&self, _position: ScrollPosition) -> Option<Msg>
crate::ScrollPosition. Read moreSource§fn scroll_grain(&self) -> f32
fn scroll_grain(&self) -> f32
0 — the
default — reports every change. Read moreSource§fn intrinsic(&self) -> Option<(IntrinsicAxis, Option<f32>)>
fn intrinsic(&self) -> Option<(IntrinsicAxis, Option<f32>)>
crate::Intrinsic.Source§fn overflow_box(&self) -> Option<Overflow>
fn overflow_box(&self) -> Option<Overflow>
crate::OverflowBox.Source§fn constraints_transform(&self) -> Option<ConstraintsTransform>
fn constraints_transform(&self) -> Option<ConstraintsTransform>
None — the default — means the child shares this node’s layout, as
everything ordinary does. See crate::ConstraintsTransformBox.Source§fn animated_size(&self) -> Option<SizeAnimation>
fn animated_size(&self) -> Option<SizeAnimation>
constraints_transform makes
follows its child’s size over time rather than at once, how (milestone 594). See
crate::AnimatedSize.Source§fn size_factor(&self) -> Option<(f32, f32)>
fn size_factor(&self) -> Option<(f32, f32)>
constraints_transform makes
is a multiple of its child’s size — (across, down), 1 for as big as the child
— the multiples (milestones 596 and 597). See crate::SizeTransition and
crate::Aligned::width_factor.Source§fn clips_to_box(&self) -> bool
fn clips_to_box(&self) -> bool
constraints_transform
makes cuts its child to itself. A reveal does; an anchor with a factor lets its
child spill (milestone 597).Source§fn layout_builder(&self) -> Option<&dyn Fn(Size) -> Box<dyn Widget<Msg>>>
fn layout_builder(&self) -> Option<&dyn Fn(Size) -> Box<dyn Widget<Msg>>>
size → widget factory. The content is built on the fly: no retained state
and no overlay (like a virtualised list item).Source§fn scroll_overlay(&self) -> Option<&OverlayBuilder<Msg>>
fn scroll_overlay(&self) -> Option<&OverlayBuilder<Msg>>
offset → overlay factory. See crate::ScrollOverlay. Read moreSource§fn scroll_axis(&self) -> Axis
fn scroll_axis(&self) -> Axis
Source§fn scroll_physics(&self) -> Option<ScrollPhysics>
fn scroll_physics(&self) -> Option<ScrollPhysics>
None — the usual answer — leaves the choice to
the application, which defaults to what the platform does.Source§fn scrollbars(&self) -> Option<Scrollbars>
fn scrollbars(&self) -> Option<Scrollbars>
None — the default — follows the application, which follows
the platform. See crate::Scrollbars.Source§fn thumb_visibility(&self) -> Option<bool>
fn thumb_visibility(&self) -> Option<bool>
scrollbar.dart:214). Read moreSource§fn overlay(&self) -> Option<(&dyn Widget<Msg>, Placement)>
fn overlay(&self) -> Option<(&dyn Widget<Msg>, Placement)>
Source§fn overlay_dismiss(&self) -> Option<Msg>
fn overlay_dismiss(&self) -> Option<Msg>
Source§fn overlay_scrim(&self, _theme: &Theme) -> Option<Color>
fn overlay_scrim(&self, _theme: &Theme) -> Option<Color>
None — the usual answer — leaves it to the scheme’s scrim
role at the framework’s own opacity. Read moreSource§fn overlay_traps_focus(&self) -> bool
fn overlay_traps_focus(&self) -> bool
true, this widget’s anchored overlay (a menu…) traps focus: Tab and the
arrow keys cycle within its focusables while it is open (the keyboard pattern of menus).
Modal (scrimmed) overlays already trap by default; a tooltip or an autocomplete list
(focus stays on the field) do not. Default: false.Source§fn anim_target(&self) -> Option<f32>
fn anim_target(&self) -> Option<f32>
1.0 for a switch that is on,
0.0 for off). The runtime drives the retained value towards this target and
hands it back through Status::value. None = no animated value.Source§fn anim_transform(&self) -> Option<TransformValues>
fn anim_transform(&self) -> Option<TransformValues>
Transform::animated): the runtime
tweens the scales and the turn through anim_duration/anim_curve and hands the
interpolated value back through Runtime::anim_transform, which the paint walk
reads in place of the static transform_scale/transform_rotate. None = the
transform does not move. Read moreSource§fn anim_duration(&self) -> f32
fn anim_duration(&self) -> f32
anim_target).
Default: the framework’s standard duration.Source§fn anim_curve(&self) -> Curve
fn anim_curve(&self) -> Curve
anim_target).
Default: linear.Source§fn anim_initial(&self) -> Option<f32>
fn anim_initial(&self) -> Option<f32>
None, the default: at
its target, with no transition, so a switch shown on is simply on. A widget that
plays something from its start when it appears — an animation — says Some(0.0),
and the value travels to its target in anim_duration from the first frame
(milestone 691).Source§fn opacity_group(&self) -> Option<f32>
fn opacity_group(&self) -> Option<f32>
[0,1]
applied to its whole subtree as one: the paint walk wraps its primitives
in a composited layer at that opacity — no double-blending where they
overlap. None = not a group. Combined with anim_target, the opacity
animates (a group fade).Source§fn anim_color(&self) -> Option<Color>
fn anim_color(&self) -> Option<Color>
Container::animated_color): the runtime tweens it (through
anim_duration/anim_curve) and hands the interpolated value back in
Status::anim_color. None = no animated colour.Source§fn anim_size(&self) -> Option<Size>
fn anim_size(&self) -> Option<Size>
Container::animated_size): the runtime
tweens it (through anim_duration/anim_curve) and the interpolated size is
injected at layout (see effective_style). None = fixed size.Source§fn anim_radius(&self) -> Option<BorderRadius>
fn anim_radius(&self) -> Option<BorderRadius>
Container::animated_radius):
the runtime tweens it and hands the interpolated value back in
Status::anim_radius. None = fixed radius.Source§fn anim_padding(&self) -> Option<Insets>
fn anim_padding(&self) -> Option<Insets>
Container::animated_padding):
the runtime tweens it and the interpolated padding is injected at layout
(see effective_style). None = fixed padding.Source§fn anim_offset(&self) -> Option<(f32, f32)>
fn anim_offset(&self) -> Option<(f32, f32)>
None — the default — leaves the rule
reading the widget’s own numbers. Read moreSource§fn anim_pins(&self) -> Option<Positioning>
fn anim_pins(&self) -> Option<Positioning>
crate::AnimatedPositioned): the
runtime tweens them and the interpolated pins are read where the stack lays its
layers out. None — the default — leaves Widget::positioned alone. Read moreSource§fn anim_fractions(&self) -> Option<(Option<f32>, Option<f32>)>
fn anim_fractions(&self) -> Option<(Option<f32>, Option<f32>)>
FractionallySizedBox::animated), as (width factor, height factor): the
runtime tweens them and the interpolated pair is injected at layout (see
effective_style), like the size and the padding. None = fixed factors. Read moreSource§fn anim_text_style(&self) -> Option<TextStyle>
fn anim_text_style(&self) -> Option<TextStyle>
AnimatedDefaultTextStyle). None = the subtree inherits whatever it inherits. Read moreSource§fn alignment_geometry(&self) -> Option<AlignmentGeometry>
fn alignment_geometry(&self) -> Option<AlignmentGeometry>
frus_core::AlignmentGeometry). Being continuous, a Tween<Alignment>
read in view() slides the child. None = default flex placement.Source§fn transform_translate(&self) -> Option<(f32, f32)>
fn transform_translate(&self) -> Option<(f32, f32)>
(dx, dy) applied to the widget’s whole subtree: the render
and the hit-test are offset without touching layout (siblings do not move,
the child may overflow its box). Continuous → a Tween read in view() slides
the subtree. None = no offset. See crate::Transform.Source§fn translate_fraction(&self) -> Option<(f32, f32)>
fn translate_fraction(&self) -> Option<(f32, f32)>
(fx, fy): (0.5, 0.0)
slides the subtree half its own width to the right. Added to
Widget::transform_translate, and offsetting the render and the hit-test the
same way, without touching layout. None = no offset. Read moreSource§fn transform_scale(&self) -> Option<(f32, f32, Alignment)>
fn transform_scale(&self) -> Option<(f32, f32, Alignment)>
(sx, sy, pivot) of the whole subtree: the render and the
hit-test are scaled — per axis — around the pivot (a
frus_core::Alignment within the box), without touching layout. Stays
axis-aligned (a scaled rect is still a rect). None = no scaling.
See crate::Transform.Source§fn transform_rotate(&self) -> Option<(f32, Alignment)>
fn transform_rotate(&self) -> Option<(f32, Alignment)>
(angle, pivot) of the whole subtree: the subtree is
painted rotated by angle radians (clockwise) around the pivot (a
frus_core::Alignment within the box), without touching layout. The
render goes through a rotated composited layer; the hit-test counter-rotates
the point. None = no rotation. See crate::Transform.Source§fn clip_shape(&self) -> Option<ClipShape>
fn clip_shape(&self) -> Option<ClipShape>
frus_core::ClipShape (rounded corners, ellipse)
modulates the alpha — whatever falls outside the shape is erased, edges
antialiased. None = no shape clip. See crate::ClipRRect,
crate::ClipOval.Source§fn style_themed(&self, _theme: &Theme) -> Style
fn style_themed(&self, _theme: &Theme) -> Style
caller ?? theme ?? framework chain. Read moreSource§fn theme_override(&self, _inherited: &Theme) -> Option<Box<Theme>>
fn theme_override(&self, _inherited: &Theme) -> Option<Box<Theme>>
None — the default — means “whatever came down from above”, which is
what every widget but crate::Themed answers. Read moreSource§fn media_override(&self, _inherited: MediaQuery) -> Option<MediaQuery>
fn media_override(&self, _inherited: MediaQuery) -> Option<MediaQuery>
None — the default — means “whatever came down from above”, which is
what every widget but MediaScope answers. Read moreSource§fn scaffold_override(&self) -> Option<ScaffoldInfo>
fn scaffold_override(&self) -> Option<ScaffoldInfo>
Source§fn scroll_behavior_override(&self) -> Option<ScrollBehavior>
fn scroll_behavior_override(&self) -> Option<ScrollBehavior>
ScrollBehavior this widget puts in force for its
subtree, or None — the default — for whatever came down from above. Only
ScrollConfiguration answers otherwise. Applied by
the same four walks as Self::scaffold_override: the scrollables under it record
what it decides when they are registered (milestone 616).Source§fn build_themed(&self, _theme: &Theme)
fn build_themed(&self, _theme: &Theme)
ThemeBuilder. Does nothing by
default, which is what all but a handful of widgets want. Read moreSource§fn build_in(&self, _id: WidgetId, _runtime: &Runtime, theme: &Theme)
fn build_in(&self, _id: WidgetId, _runtime: &Runtime, theme: &Theme)
Self::build_themed, for the few widgets that also need who they are and
what the frame remembers to compose their subtree. An
AnimatedSwitcher keeps what it is letting go of in the
runtime, under its own identity, and that is reachable nowhere else before its
children are read. Read moreSource§fn expand(&self, _id: WidgetId, _runtime: &Runtime, _theme: &Theme)
fn expand(&self, _id: WidgetId, _runtime: &Runtime, _theme: &Theme)
Source§fn switches(&self) -> bool
fn switches(&self) -> bool
AnimatedSwitcher. An identity
is a position, so a switcher and the widget that comes to stand where it stood have
the same one: this is how the runtime tells the switcher still being there from its
having gone, and forgets what it kept for it.Source§fn system_ui_style(&self) -> Option<SystemUiOverlayStyle>
fn system_ui_style(&self) -> Option<SystemUiOverlayStyle>
AnnotatedRegion. None for every widget but that one; a
transparent wrapper forwards it, or a keyed region would say nothing.Source§fn ink(&self, _theme: &Theme) -> Option<InkStyle>
fn ink(&self, _theme: &Theme) -> Option<InkStyle>
None = no ink, which is the default: a
widget has to ask. Read moreSource§fn foreground(&self, _theme: &Theme) -> Option<BoxDecoration>
fn foreground(&self, _theme: &Theme) -> Option<BoxDecoration>
foregroundDecoration. Read moreSource§fn paints_over(&self) -> bool
fn paints_over(&self) -> bool
paint_over (milestone 652). false by default, which spares
the walk the status it would compute for it.Source§fn paint_over(
&self,
_bounds: Rect,
_status: Status,
_theme: &Theme,
_scene: &mut Scene,
)
fn paint_over( &self, _bounds: Rect, _status: Status, _theme: &Theme, _scene: &mut Scene, )
Widget::paint is given — the reference’s foregroundPainter, for what a
widget draws that its children must not cover. A range slider’s thumbs are one:
each thumb’s focus stop is a child, and the halo it paints belongs under the thumb. Read moreSource§fn layer_filter(&self, _cx: FilterContext) -> Option<LayerFilter>
fn layer_filter(&self, _cx: FilterContext) -> Option<LayerFilter>
Source§fn backdrop_group(&self) -> bool
fn backdrop_group(&self) -> bool
true when this widget is a backdrop group: the backdrops below it that
ask to be shared are filtered once between them. See crate::BackdropGroup.Source§fn text_baseline(&self, _theme: &Theme) -> Option<f32>
fn text_baseline(&self, _theme: &Theme) -> Option<f32>
None — the default — means this widget has no
text of its own, and whatever is inside it answers instead. Read moreSource§fn ignores_baseline(&self) -> bool
fn ignores_baseline(&self) -> bool
true when this subtree should be left out of a parent’s baseline
alignment: it has a baseline, and the parent is to pretend it does not. An icon
beside a label, where the label is what the row should line up on. See
crate::IgnoreBaseline.Source§fn main_axis_floor(&self, _theme: &Theme) -> Option<f32>
fn main_axis_floor(&self, _theme: &Theme) -> Option<f32>
None means squeeze freely. Read moreSource§fn tile_shape(&self) -> Option<f32>
fn tile_shape(&self) -> Option<f32>
width / height ratio to impose on each of them. None = each child keeps
its own shape. Read moreSource§fn positioned(&self) -> Option<Positioning>
fn positioned(&self) -> Option<Positioning>
crate::Stack’s edges
(crate::Positioned), what it pins. None = an ordinary layer, sized and
placed by the stack’s own fit and alignment. Read moreSource§fn stack_fit(&self) -> StackFit
fn stack_fit(&self) -> StackFit
crate::StackFit). Unset,
Passthrough: each is handed the stack’s box, and
one with a size of its own keeps it. Meaningless unless Widget::stack is true.Source§fn stack_measured(&self) -> bool
fn stack_measured(&self) -> bool
crate::Stack is, rather than the size its own style says. Meaningless unless
Widget::stack is true.Source§fn stack_clips(&self) -> bool
fn stack_clips(&self) -> bool
Source§fn stack_direction(&self) -> Option<TextDirection>
fn stack_direction(&self) -> Option<TextDirection>
Source§fn stack_visible(&self) -> Option<usize>
fn stack_visible(&self) -> Option<usize>
None, the default, shows all of them. Read moreSource§fn keep_visible(&self, _size: Size, _theme: &Theme) -> Option<KeepVisible>
fn keep_visible(&self, _size: Size, _theme: &Theme) -> Option<KeepVisible>
Source§fn scroll_reverse(&self) -> bool
fn scroll_reverse(&self) -> bool
crate::SingleChildScrollView::reverse):
the content is anchored to the end of the viewport and offsets are counted from
there. Meaningless unless Widget::scroll_content is Some.Source§fn scroll_padding(&self) -> Insets
fn scroll_padding(&self) -> Insets
Source§fn baseline_target(&self) -> Option<f32>
fn baseline_target(&self) -> Option<f32>
crate::Baseline),
the distance from the top of this box at which that baseline should land.
None = not a baseline box.Source§fn clip_path(&self) -> Option<&Path>
fn clip_path(&self) -> Option<&Path>
ClipPath), returns the
path in local coordinates (origin at the box’s top-left corner). The walk
offsets it to the screen and wraps it in a layer whose mask (the path) erases
the outside. Takes priority over Widget::clip_shape. None = no path clip.
See crate::ClipPath.Source§fn dismissible(&self) -> Option<DismissSpec>
fn dismissible(&self) -> Option<DismissSpec>
crate::Dismissible), its
configuration for this frame. The shell gives a mostly-sideways drag on it to
the dismissal and a mostly-up-and-down one to the enclosing scrollable. None =
not dismissible.Source§fn on_dismissed(&self, _direction: DismissDirection) -> Option<Msg>
fn on_dismissed(&self, _direction: DismissDirection) -> Option<Msg>
None = the swipe is shown but removes nothing.Source§fn sheet(&self) -> Option<&SheetSpec>
fn sheet(&self) -> Option<&SheetSpec>
crate::DraggableScrollableSheet, its
configuration for this frame. The layout makes it as tall as the retained height,
and the shell shares a finger on it between the sheet and the scroll areas inside.
None = not a sheet.Source§fn on_sheet_dismissed(&self) -> Option<Msg>
fn on_sheet_dismissed(&self) -> Option<Msg>
None = it
cannot be dismissed, or says nothing when it is.Source§fn refresh(&self) -> Option<RefreshSpec>
fn refresh(&self) -> Option<RefreshSpec>
crate::RefreshIndicator), its configuration for
this frame. Any scrollable inside it routes the movement its physics refuses at
the top edge into the pull, instead of into the overscroll glow. None = not a
refresh area.Source§fn on_refresh(&self) -> Option<Msg>
fn on_refresh(&self) -> Option<Msg>
None =
the pull is shown but asks for nothing, which is what an area still waiting for
its on_refresh looks like.Source§fn barrier(&self) -> Option<ModalBarrier>
fn barrier(&self) -> Option<ModalBarrier>
None = nothing withheld (the default). See crate::ModalBarrier,
crate::IgnorePointer, crate::AbsorbPointer, crate::Visibility,
crate::ExcludeSemantics.Source§fn interactive(&self) -> Option<(f32, f32)>
fn interactive(&self) -> Option<(f32, f32)>
InteractiveViewer), returns its
scale bounds (min, max). The paint walk renders its child in a transformed
layer (retained scale + translation, clipped to the viewport); the shell routes
drag → pan and wheel/pinch → zoom. None = not an interactive viewport.
See crate::InteractiveViewer.Source§fn fitted(&self) -> Option<BoxFit>
fn fitted(&self) -> Option<BoxFit>
FittedBox), returns the
frus_core::BoxFit: the walk measures the child at its natural size, scales
it according to the fit and centres it (composited layer, hit-test through
M⁻¹). None = not a fitter. See crate::FittedBox.Source§fn rotated_quarter_turns(&self) -> Option<i32>
fn rotated_quarter_turns(&self) -> Option<i32>
RotatedBox), returns
the number of quarters. Unlike Transform, this affects layout: the box
swaps its dimensions for an odd number. None = not a RotatedBox.
See crate::RotatedBox.(progress, push?). Its children
([screen] or [outgoing, incoming]) are rendered full-window with a sliding
transition.navigator’s transition — a back
gesture — so that it follows the finger linearly (milestone 620).0, the default, is a navigator that shows every
page it holds.Source§fn on_long_press(&self) -> Option<Msg>
fn on_long_press(&self) -> Option<Msg>
on_click.Source§fn on_double_tap(&self) -> Option<Msg>
fn on_double_tap(&self) -> Option<Msg>
on_click waits out those 300 ms, so that
the second tap of a double tap is not also a tap.Source§fn on_secondary_tap(&self) -> Option<Msg>
fn on_secondary_tap(&self) -> Option<Msg>
Source§fn pointer_listener(&self) -> bool
fn pointer_listener(&self) -> bool
Source§fn on_pointer_event(&self, _event: ListenerEvent) -> Vec<Msg>
fn on_pointer_event(&self, _event: ListenerEvent) -> Vec<Msg>
pointer_listener. Several, when listeners wrap each other at
the same place.Source§fn hover_region(&self) -> Option<HoverRegion>
fn hover_region(&self) -> Option<HoverRegion>
None for anything that is not one.Source§fn on_hover_event(&self, _event: HoverEvent) -> Option<Msg>
fn on_hover_event(&self, _event: HoverEvent) -> Option<Msg>
hover_region is set.Source§fn pan_axis(&self) -> Option<PanAxis>
fn pan_axis(&self) -> Option<PanAxis>
on_pan. Inside a scroll, a drag along
the scroll’s axis stays the scroll’s unless this axis claims it.Source§fn on_pan(&self, _event: PanEvent) -> Option<Msg>
fn on_pan(&self, _event: PanEvent) -> Option<Msg>
pan_axis is set.Source§fn wants_title_bar(&self) -> bool
fn wants_title_bar(&self) -> bool
WindowMenuBar’s row. The shell gives it the line where the
system allows it.Source§fn title_bar_role(&self) -> Option<TitleBarRole>
fn title_bar_role(&self) -> Option<TitleBarRole>
Source§fn pan_value(&self, _event: PanEvent, _value: f32, _rtl: bool) -> Option<f32>
fn pan_value(&self, _event: PanEvent, _value: f32, _rtl: bool) -> Option<f32>
anim_target) — a
switch’s thumb following the finger (milestone 638). Given a moment of the drag, the
value now and whether the text runs right to left, the value to hold it at; None
leaves it alone. The shell holds the value there while the finger is down, and when
it lifts lets it settle from there, asking on_value_release what that means.Source§fn on_value_release(&self, _value: f32) -> Option<Msg>
fn on_value_release(&self, _value: f32) -> Option<Msg>
value — a switch
flips when its thumb was let go past half way (milestone 638).Source§fn on_key(&self, _key: &Key) -> KeyResponse<Msg>
fn on_key(&self, _key: &Key) -> KeyResponse<Msg>
Ignored. (E.g. an OverlayPortal
consumes Escape to close itself.)