Struct CropEditor
pub struct CropEditor { /* private fields */ }Expand description
The crop editor of a picture once its bytes arrive, reporting the crop the person sets.
Implementations§
§impl CropEditor
impl CropEditor
pub fn new(
pictures: Pictures,
picture: PictureSource,
selection: CropSelection,
) -> CropEditor
pub fn new( pictures: Pictures, picture: PictureSource, selection: CropSelection, ) -> CropEditor
The editor of picture starting at selection, reporting each change to change.
pub fn reporting(self, event: Event) -> CropEditor
pub fn reporting(self, event: Event) -> CropEditor
Report each crop change to event.
pub fn with_aspect(self, aspect: f64) -> CropEditor
pub fn with_aspect(self, aspect: f64) -> CropEditor
The box stands at width / height before the picture’s shape is known.
Trait Implementations§
§impl Described for CropEditor
impl Described for CropEditor
type Props = ImageCropEditorProps
§fn from_props(_key: &str, props: ImageCropEditorProps) -> CropEditor
fn from_props(_key: &str, props: ImageCropEditorProps) -> CropEditor
The widget of
props, with key its stable id.§fn set_props(&mut self, props: ImageCropEditorProps) -> bool
fn set_props(&mut self, props: ImageCropEditorProps) -> bool
Take changed props in place, damaging what they change:
false when this widget cannot
and is to be built again.§fn slot_views(&mut self, slot: &str) -> Option<&mut dyn SlotViews>
fn slot_views(&mut self, slot: &str) -> Option<&mut dyn SlotViews>
The views of its slot
slot, to change by key in place: None when a change of what
the slot holds builds the widget again.§fn part_views(
&mut self,
slot: &str,
key: &str,
of: &str,
) -> Option<&mut dyn SlotViews>
fn part_views( &mut self, slot: &str, key: &str, of: &str, ) -> Option<&mut dyn SlotViews>
The views its slot
slot holds for the part key — a part being a component the slot
takes, whose props the widget reads — in that part’s own view slot of, to change them
by key where they stand. None when a change inside a part builds the widget again.§impl Widget for CropEditor
impl Widget for CropEditor
§fn as_any(&self) -> Option<&(dyn Any + 'static)>
fn as_any(&self) -> Option<&(dyn Any + 'static)>
Downcast to the concrete widget, for hosts and tests that reach a
known widget through
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 sync(&mut self, state: &(dyn Any + 'static), path: &(dyn Any + 'static))
fn sync(&mut self, state: &(dyn Any + 'static), path: &(dyn Any + 'static))
Pull model state into this widget before layout. The default syncs the
children
Widget::children_mut returns; a widget overrides it only to
read state of its own, or to sync children it does not expose there.§fn update(
&mut self,
state: &(dyn Any + 'static),
path: &(dyn Any + 'static),
) -> bool
fn update( &mut self, state: &(dyn Any + 'static), path: &(dyn Any + 'static), ) -> bool
Notice, between frames, state outside the document (a chrome revision, a momentum scroll
still ticking) and report whether anything changed. The default updates every child
Widget::children_mut returns without short-circuiting, so a container never freezes its
descendants; an override checks state of its own and forwards.§fn needs_redraw(&self) -> bool
fn needs_redraw(&self) -> bool
Default
false (clean). A widget is clean until something it reads
changes: a leaf that keeps state says so by tracking a dirty: bool
(set in handle_event/sync, cleared in mark_drawn()), and one
that paints from the people on the document reads the frame’s
presence (crate::presence::frame::frame). Containers MUST
forward: dirty iff any descendant is.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)
Take the geometry layout gave this node. The default keeps none, for
widgets that neither draw nor hit-test.
§fn draw(
&mut self,
scene: &mut Scene,
transform: Affine,
text: &mut TextRenderer,
theme: &Theme,
presence: &PresenceCtx,
)
fn draw( &mut self, scene: &mut Scene, transform: Affine, text: &mut TextRenderer, theme: &Theme, presence: &PresenceCtx, )
Paint into
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<'_>)
Handle one input event with the runtime services for this retained node.
§fn get_rect(&self) -> Rect
fn get_rect(&self) -> Rect
The rectangle this widget occupies. The default, for widgets that
keep no geometry, is empty.
fn name(&self) -> &'static str
§fn accessibility(&self) -> Option<AccessNode>
fn accessibility(&self) -> Option<AccessNode>
Role, name/description/value, and
AccessState. Default None means
presentational: the node is skipped and children reparent onto the
parent. State must be derived, not stored so it can’t drift from
draw; names must already be i18n!-resolved.§fn native_input_snapshot(
&self,
_state: &(dyn Any + 'static),
_path: &(dyn Any + 'static),
) -> Option<Value>
fn native_input_snapshot( &self, _state: &(dyn Any + 'static), _path: &(dyn Any + 'static), ) -> Option<Value>
Read-only state evidence for opt-in scheduled native input diagnostics.
Called only around diagnostic inputs, never during ordinary input or paint.
Keep this inexpensive and root-local; snapshots may be logged verbatim.
This verifies widget state, not rendered pixels or display presentation.
§fn view_only_scroll(&self, _event: &WindowEvent) -> bool
fn view_only_scroll(&self, _event: &WindowEvent) -> bool
Opt in only when this wheel event changes scroll geometry and nothing else: no document
edit, focus or selection, action availability, resource declaration, pending command or work
that requires
sync. The runner still lays out, paints and refreshes accessibility
geometry; unknown handlers stay on the full path.§fn primary_vertical_scroll(&self) -> Option<PrimaryScrollRegion>
fn primary_vertical_scroll(&self) -> Option<PrimaryScrollRegion>
Explicit app-owned region; never search secondary children implicitly.
fn apply_primary_vertical_scroll( &mut self, _action: PrimaryScrollAction, ) -> PrimaryScrollResult
§fn callback_binding(&self) -> Option<CallbackBinding>
fn callback_binding(&self) -> Option<CallbackBinding>
Runtime binding inherited by descendants in a matching layout topology.
§fn has_separate_document_owner(&self) -> bool
fn has_separate_document_owner(&self) -> bool
Whether this widget introduces a document owner distinct from the
runner’s outer State. This is a compatibility check, never identity
or authority for history access or restore. Read more
§fn history_owner(&self) -> Option<HistoryOwner>
fn history_owner(&self) -> Option<HistoryOwner>
Opaque actual custody for framework History source registration.
§fn record_owners(&self) -> Vec<HistoryOwner>
fn record_owners(&self) -> Vec<HistoryOwner>
Records this widget keeps open beside the document it shows, each
synced on its own route: a framework app’s records in the person’s
own workspace (
crate::record::person). They take no part in this
widget’s history or controls.§fn provide<'a>(&'a self, _request: &mut Request<'a, '_>)
fn provide<'a>(&'a self, _request: &mut Request<'a, '_>)
Answer a request for a capability this widget takes part in (see
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, '_>)
Exclusive counterpart to
Widget::provide.§fn mount_native_views(&mut self, host: &NativeViewHost<'_>)
fn mount_native_views(&mut self, host: &NativeViewHost<'_>)
Attach native child views through this owner’s retained lifecycle topology. Presentation
containers with inactive or hidden live descendants override this traversal so lifecycle
ownership stays independent of drawing and input visibility.
§fn unmount_native_views(&mut self)
fn unmount_native_views(&mut self)
Tear native children down while their parent window still exists.
§fn native_view_frame_start(&mut self)
fn native_view_frame_start(&mut self)
Begin a native-view frame through this owner’s retained lifecycle topology.
§fn set_platform_conventions(&mut self, conventions: PlatformConventions)
fn set_platform_conventions(&mut self, conventions: PlatformConventions)
Receive host-selected platform conventions. The default propagates to
retained children, keeping target-OS branches out of app code.
§fn set_interaction_environment(&mut self, environment: InteractionEnvironment)
fn set_interaction_environment(&mut self, environment: InteractionEnvironment)
Receive the host’s current input capabilities. The default propagates
through retained containers, so app code does not need device branches.
§fn set_window_bar_control(&mut self, in_bar: bool)
fn set_window_bar_control(&mut self, in_bar: bool)
Tell this widget whether it stands in a window bar. A bar’s controls are drawn
at the bar’s control height whatever the pointer; the target a finger needs
reaches beyond the drawn shape, invisibly. The default propagates to children.
§fn settle(&mut self, edits: &mut Edits<'_>, path: &ExId)
fn settle(&mut self, edits: &mut Edits<'_>, path: &ExId)
Apply, after the sync pass, what the widget took up there and must write: a worker’s answer,
a chooser’s file, an event a child queued. Writes go only through typed actions on
edits;
the host syncs again when the document changed. The default settles the returned children.fn measure( &mut self, _known: Size<Option<f32>>, _available: Size<AvailableSpace>, _text_renderer: &mut TextRenderer, ) -> Size<f32>
§fn layout_info(&self) -> Option<LayoutInfo>
fn layout_info(&self) -> Option<LayoutInfo>
Read-only resolved decisions for widgets with an explicit layout policy.
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
Adjust this node’s style using its allocated size, before final
geometry is applied. Return true only when the style changed (or an
inherited decision child hooks read). An override may measure its owned
children through ordinary references, entering their callback binding
when present. Never reenter descendants through the raw node map while
borrowing their parent, change topology, or build another layout tree.
The shared host solver visits every registered widget, repeats layout
at most eight times and skips a frame that does not settle.
§fn observe_physical_input(&mut self, _input: PhysicalInput)
fn observe_physical_input(&mut self, _input: PhysicalInput)
Observe this app’s ordinary foreground physical input before framework
shortcuts consume it. Keep feedback ephemeral; this is not an input grant.
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))
Allocation-free read-only child traversal. Existing custom containers
inherit a compatibility adapter over
Self::children; toolkit
containers override this to walk their retained storage directly.§fn for_each_child_in_clip(&self, visitor: &mut dyn FnMut(&dyn Widget))
fn for_each_child_in_clip(&self, visitor: &mut dyn FnMut(&dyn Widget))
The children of
Self::for_each_child that may paint inside the layout_clip in
effect: what a scroll view’s damage and copy plan need. Every child by default; a long
column visits only those near the clip, so a frame costs what is shown, not what the column
holds.§fn for_each_hosted_child(&self, _visitor: &mut dyn FnMut(&dyn Widget))
fn for_each_hosted_child(&self, _visitor: &mut dyn FnMut(&dyn Widget))
Children this widget keeps in the retained tree but does not route
input to: a subtree it does not own and answers the person’s events
for itself, like a host drawing another widget’s card over the
windows. Inspection, named controls and the accessibility tree walk
these after the children
Self::children lists, so what is walked
there keeps the paths, sibling indices and registry entries it had.§fn for_each_layout_child(&self, _visitor: &mut dyn FnMut(&dyn Widget)) -> bool
fn for_each_layout_child(&self, _visitor: &mut dyn FnMut(&dyn Widget)) -> bool
Every child this widget’s
Self::build_layout gives a layout node,
also those Self::for_each_child keeps from routing (a hidden
pane, a title, a spacer). A retained layout is checked against this
walk before it is called through again, so a widget that replaced a
child without reporting it gets a new layout instead of a call into
freed memory. A child missing here cannot be checked, so debug builds
stop on it. A wrapper that stands for its inner widget’s node visits
the inner widget itself. Read morefn children_mut(&mut self) -> Vec<&mut dyn Widget>
§fn test_id(&self) -> Option<&str>
fn test_id(&self) -> Option<&str>
Stable id for the e2e test harness;
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 window_slot(&self, _id: String) -> Option<ToolbarAction>
fn window_slot(&self, _id: String) -> Option<ToolbarAction>
This control as an action of the window’s bar, sent back as
id
(crate::window_toolbar::ToolbarAction): a button’s icon and name.
None for anything that is not a button.§fn stands_for(&self, address: *const ()) -> bool
fn stands_for(&self, address: *const ()) -> bool
Whether this widget is the one at
address, or stands in the tree
for it: a Decorator stands for every widget it wraps, so a
scroller drawn inside one is found where the decorator is
(crate::scroll_copy::offer).§fn focus_reveal_context(&self) -> Option<Rect>
fn focus_reveal_context(&self) -> Option<Rect>
Context that should remain visible with a focused descendant, such
as a form control and its validation message. Opt-in scroll containers
use this block when it fits; otherwise they prioritise the control.
§fn reveal_descendant(&mut self, target: *const dyn Widget) -> bool
fn reveal_descendant(&mut self, target: *const dyn Widget) -> bool
Reveal a newly keyboard-focused descendant inside any enclosing
viewport. Containers override this to scroll; ordinary widgets simply
recurse toward the target and report whether it was found.
§fn test_rects(&self) -> Vec<(String, Rect)>
fn test_rects(&self) -> Vec<(String, Rect)>
Named hit rects for widgets that paint several affordances into one
rect instead of composing children. Same space as
Widget::get_rect; zero-area entries are dropped.§fn child_clip_rect(&self) -> Option<Rect>
fn child_clip_rect(&self) -> Option<Rect>
Absolute logical clip applied to ordinary children during painting and
pointer routing. Inspectors and enclosing scroll regions must respect
this boundary instead of treating clipped descendants as visible extent.
§fn snap_points(&self, axis: ScrollAxis, out: &mut Vec<f32>)
fn snap_points(&self, axis: ScrollAxis, out: &mut Vec<f32>)
Offsets along
axis that this widget, as a scroll view’s content,
offers it to settle on, measured from its own leading edge: a board’s
lanes (crate::widget::Board). None leaves a scroller stopping
wherever the hand left it.§fn take_action_palette_request(&mut self) -> Option<ActionAddress>
fn take_action_palette_request(&mut self) -> Option<ActionAddress>
One-shot request to open the host’s action palette directly at a typed
resource action. Parameter collection and permission checks remain host
policy; widgets only name an address already present in
resources().§fn take_search_request(&mut self) -> bool
fn take_search_request(&mut self) -> bool
One-shot request to open the host’s search palette, the same one the
platform search shortcut opens. An app’s own search button latches it
so search stays one shared host surface rather than an app overlay.
§fn cursor_shape(&self, _point: Point) -> Option<CursorIcon>
fn cursor_shape(&self, _point: Point) -> Option<CursorIcon>
point is logical coords, same space as Widget::get_rect;
None defers to the default arrow. The host hit-tests the whole
tree via node_map and picks the smallest-area claim, so containers
need not override this.§fn claims_raw_touch(&self, _point: Point) -> bool
fn claims_raw_touch(&self, _point: Point) -> bool
Opt out of touch-to-pointer emulation for contacts that begin at
point (logical coords, same space as Widget::get_rect). Read more§fn touch_claim(&self, _point: Point) -> TouchClaim
fn touch_claim(&self, _point: Point) -> TouchClaim
What a one-finger contact that begins at
point (logical coords)
means here, when a drag moves something rather than scrolling. Read more§fn tooltip(&self) -> Option<&str>
fn tooltip(&self) -> Option<&str>
Revealed after a dwell over the widget’s rect, via the toolkit’s one
tooltip mechanism (
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
Which side of the control its tooltip goes: below by default,
beside it for a control in a vertical rail.
fn tooltip_target_at(&self, point: Point) -> Option<(Rect, String)>
fn is_focusable(&self) -> bool
§fn is_default_keyboard_focus(&self) -> bool
fn is_default_keyboard_focus(&self) -> bool
Preferred control when its app is explicitly activated without a valid
saved control. Hosts still enforce visibility, enabled state and scope.
§fn keyboard_input_scope(&self) -> Option<u64>
fn keyboard_input_scope(&self) -> Option<u64>
Exact app instance whose non-text shortcuts this subtree owns when
activation has no control target. Unbound desktop chrome may declare
the active tab; component boundaries default to their captured owner.
fn set_focus(&mut self, _focused: bool)
§fn set_full_bleed(&mut self, _full_bleed: bool)
fn set_full_bleed(&mut self, _full_bleed: bool)
The window holding this content fills its display (a maximized
window): it has nothing beside it to round its corners against or
to set it apart from, so content that frames or clips itself to the
window’s shape draws edge to edge instead. A client surface drawn
that way, last and unclipped, is one the display can scan out
directly. Content that frames nothing ignores it.
§fn set_invalid(&mut self, _invalid: bool)
fn set_invalid(&mut self, _invalid: bool)
The form’s validation verdict for this control, set
by
Field::with_error: an invalid control edges itself in danger ink
and reports invalid to assistive technology. Controls without a
field face ignore it.§fn focus_requested(&mut self, target: Option<NodeId>, tree: &TaffyTree)
fn focus_requested(&mut self, target: Option<NodeId>, tree: &TaffyTree)
An explicit runner focus request, after resolving the actual keyboard
owner. Retained flags and layout restoration are not user gestures.
Containers can observe this to reveal the owning viewport.
fn is_focused(&self) -> bool
The box a context menu opened from the keyboard stands against: the
item that has the keyboard, so the menu opens under it rather than
under the whole widget. A widget that holds items (a list) answers
for the one with the keyboard;
None leaves the menu to stand under
the focused widget’s own box.§fn wants_tab_input(&self) -> bool
fn wants_tab_input(&self) -> bool
Whether a focused widget owns Tab instead of the host’s focus
traversal. This is deliberately opt-in: ordinary form fields and
controls retain platform-standard Tab/Shift+Tab navigation, while a
code editor or terminal can receive the key for indentation or
completion. A widget around the focus may claim it too: a sheet that
walks its own controls with Tab.
§fn ime_cursor_rect(&self) -> Option<Rect>
fn ime_cursor_rect(&self) -> Option<Rect>
Caret rectangle for the platform input method, in window-logical
coordinates. Returning
Some enables IME for the focused widget and
positions its candidate window; non-text controls keep the default
None and therefore disable IME.§fn traps_focus(&self) -> bool
fn traps_focus(&self) -> bool
While any widget answers
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 scopes_keyboard_focus(&self) -> bool
fn scopes_keyboard_focus(&self) -> bool
Whether Tab and directional focus travel stay inside this subtree
while no trap holds focus: the content of the focused desktop window,
so keyboard travel cycles through the app the person is in and never
wanders onto the desktop’s chrome (its bars, menus and window
titles), which the keyboard reaches through its own shortcuts. Unlike
Self::traps_focus it moves no focus when it starts or ends, and
pointer input is unaffected. Default false.§fn take_app_activation(&mut self) -> Option<u64>
fn take_app_activation(&mut self) -> Option<u64>
One-shot (reading MUST clear it): the app instance the person just
brought forward (a window they opened, clicked or switched to), whose
keyboard focus the host restores, or puts on its default control, so
what they type next reaches it. Default forwards the first request
found among the children.
§fn take_focus_request(&mut self) -> Option<String>
fn take_focus_request(&mut self) -> Option<String>
One-shot (reading MUST clear it): the test id of the control this
subtree asks to take the keyboard once the runner laid it out, such as
the first field of a view a person’s press just opened, so what they
type next lands there. The runner focuses it as a press focuses a
control, blurring any other; a control it does not find (or that takes
no focus) leaves focus where it is. Default forwards the first request
found among the children.
Self::accessibility with its synthetic children shared, for a
widget that keeps them between frames: each child it did not change
is handed over as the very Arc of the last frame, which the
semantic tree takes as unchanged without copying or comparing it. Read moreWhether
Self::accessibility reports this subtree hidden, for a
host that asks it of every node to prune focus traversal. Widgets
whose node is costly to build (text values, per-block children, a
translated name) answer without building it: the focus walk asks
every widget in the window on every recomputation. Any override must
agree with accessibility(); debug builds check it in the walk.§fn accessibility_root(&self) -> Option<AccessNode>
fn accessibility_root(&self) -> Option<AccessNode>
Self::accessibility’s own node with its children left empty:
its role, identity (semantic_key) and state. Focus capture and focus
order read only these, for every node on every frame, so a widget
whose node carries a large subtree (a document exporting its every
block) answers without building it. An override must equal
accessibility() with children cleared.§fn synthetic_accessibility_rect(&self, _path: &[usize]) -> Option<Rect>
fn synthetic_accessibility_rect(&self, _path: &[usize]) -> Option<Rect>
Geometry for an immediate-mode semantic child from
AccessNode::children. The path is
its child-index path beneath this widget’s accessibility node. Returning
a rect lets AccessKit activation inject the same click as pointer input.§fn focus_synthetic_accessibility(&mut self, _path: &[usize]) -> bool
fn focus_synthetic_accessibility(&mut self, _path: &[usize]) -> bool
Move this widget’s own immediate-mode focus to a synthetic semantic
child. Retained widgets continue to use the ordinary taffy focus path.
§fn accessibility_child_parent(&self, _child_index: usize) -> Option<usize>
fn accessibility_child_parent(&self, _child_index: usize) -> Option<usize>
Reparent one retained
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>>
Reparent one retained
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
Whether one retained
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 lays_out_child(&self, _child_index: usize) -> bool
fn lays_out_child(&self, _child_index: usize) -> bool
§fn accessibility_child_description(&self, _child_index: usize) -> Option<String>
fn accessibility_child_description(&self, _child_index: usize) -> Option<String>
What describes one retained
children entry to
assistive technology, when this widget holds the words for it: a
row’s secondary line is its trailing switch’s description. The
bridge sets it as that child’s node’s description unless the child
describes itself.§fn perform_action(
&mut self,
_action: &Action,
_key_path: &[u64],
_state: &mut Edits<'_>,
_path: &(dyn Any + 'static),
) -> bool
fn perform_action( &mut self, _action: &Action, _key_path: &[u64], _state: &mut Edits<'_>, _path: &(dyn Any + 'static), ) -> bool
Perform an accessibility
Action on this
widget, or on one of its synthetic accessibility nodes. May mutate
the CRDT like handle_event. Read more§fn perform_semantic_action(
&mut self,
target: &str,
action: &Action,
state: &mut Edits<'_>,
path: &(dyn Any + 'static),
) -> bool
fn perform_semantic_action( &mut self, target: &str, action: &Action, state: &mut Edits<'_>, path: &(dyn Any + 'static), ) -> bool
Handle an action addressed to a synthetic accessibility child created
by this widget.
target is the opaque stable value supplied through
AccessNode::with_action_target. Read more§fn is_enabled(&self) -> bool
fn is_enabled(&self) -> bool
A disabled (
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
This field needs a host that consumes deferred receipts. Ordinary native
Wayland windows must not advertise it until they have that delivery path.
§fn ime_refuses_ordinary_commits(&self) -> bool
fn ime_refuses_ordinary_commits(&self) -> bool
Ordinary input-method commits (a composing keyboard IME, the on-screen
keyboard) cannot reach this field: its text arrives only through
deferred receipts (a browser page field), so hosts keep standard text
input closed outside a dictation session. A field that needs deferred
receipts for dictation but turns an ordinary commit into its own
acknowledged edit (Terminal’s native editor) does not refuse them.
§fn start_deferred_text(&mut self) -> Option<Receipt>
fn start_deferred_text(&mut self) -> Option<Receipt>
Begin one bounded deferred session after explicit host consent, preserving
the existing original-field fingerprint. This grants no microphone access.
§fn commit_deferred_text(&mut self, text: &str) -> Option<Receipt>
fn commit_deferred_text(&mut self, text: &str) -> Option<Receipt>
A private asynchronous final. None leaves ordinary synchronous IME dispatch
to the host. A receipt binds this original field and must be acknowledged
before the host releases its private recovery transcript.
§fn ime_content(&self) -> Option<InputContent>
fn ime_content(&self) -> Option<InputContent>
The focused widget wants platform text input (Wayland
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
Whether the original focused editor accepts line feeds as text. This is
field policy, never inferred from a multiline accessibility presentation.
Wrappers inherit only one unambiguous child at their active IME caret.
§fn ime_edit_fingerprint(&self, key: &[u8; 32]) -> Option<[u8; 32]>
fn ime_edit_fingerprint(&self, key: &[u8; 32]) -> Option<[u8; 32]>
Opaque local invalidation of deferred input, including selection edits
that leave the caret rectangle unchanged. The host supplies an ephemeral
secret key; no text or selection is retained in the resulting digest.
The default shares the accessibility door and excludes protected or
read-only controls. Text controls can override it to avoid cloning text.
§fn presented(&self) -> bool
fn presented(&self) -> bool
Default
true; false only for a widget standing in for a window’s
content whose first frame has not drawn. Must latch: once true,
never false again for the same content.§fn arrives_from(&self) -> Source
fn arrives_from(&self) -> Source
Where this content’s first frame comes from while it has not
presented: this device (an app starting here),
another device or a host. A frame from this device may hold the
window’s first frame up to one frame budget; any other reserves the
window’s place and says where it comes from after a while.§fn arrival_progress(&self) -> Option<Progress>
fn arrival_progress(&self) -> Option<Progress>
How much of what this content’s first frame waits on has come, when
that measures itself (its app downloaded before it starts).
§fn arrival_shape(&self) -> SkeletonShape
fn arrival_shape(&self) -> SkeletonShape
The shape this content declares for the placeholder standing in for
its first frame. Undeclared, the placeholder is the ground alone:
nothing guesses what a window will show.
§fn text_review(&self) -> Option<(usize, String)>
fn text_review(&self) -> Option<(usize, String)>
(caret_byte, text), byte offset on a char boundary. The host diffs
this before/after an event so caret-only moves (arrows, Home/End)
get announced, not just typing.§fn on_external_event(
&mut self,
_payload: &str,
_state: &mut Edits<'_>,
_root: &(dyn Any + 'static),
)
fn on_external_event( &mut self, _payload: &str, _state: &mut Edits<'_>, _root: &(dyn Any + 'static), )
Delivers an out-of-band string payload from
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.Global back/forward gesture (swipe/edge-pull), recognised by
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.Which directions
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
One-shot (reading MUST clear it) signal to move focus to this
subtree’s first focusable widget after the next rebuild. Only
consulted under
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>
One-shot (reading MUST clear it) request to change the window’s
accessibility preferences, raised by a control the person used. The
host applies it before the next frame. Default forwards the first
request found among the children.
§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
Put
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>
Theme/high-contrast/reduced-motion/scale, polled under
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 minimum_window_width(&self) -> Option<f64>
fn minimum_window_width(&self) -> Option<f64>
The narrowest this window still works at, in logical pixels: the
minimum of its compact layout (a
NavShell answers with one column
at a time). The host states it to the window system, so the desktop
stops a resize there. None: no opinion. The host walks the tree
itself (minimum_window_width), so containers need not forward
it; the first Some wins.§fn preferred_window_size(&self) -> Option<(f64, f64)>
fn preferred_window_size(&self) -> Option<(f64, f64)>
The whole size this window wants, in logical pixels, when the app is
the window’s only content and knows how big it must be: the on-screen
keyboard parked to a strip. The host states it as the window’s minimum
and maximum, so the desktop shapes the surface to it.
None: the
window is the user’s and the app lays itself out in whatever it gets.§fn set_motion_reduced(&mut self, reduced: bool)
fn set_motion_reduced(&mut self, reduced: bool)
Apply the effective reduced-motion preference before the host asks this
subtree whether it needs another animation frame. The default forwards
recursively, making the preference a framework policy instead of an
optional convention that every container has to remember to implement. Read more
§fn needs_idle_sync(&self) -> bool
fn needs_idle_sync(&self) -> bool
Whether
sync still needs to run on idle frames without input or
collab events — e.g. waiting out a document-adoption grace window.fn wants_pointer_capture(&self) -> bool
§fn disclosing(&self) -> Option<Disclosing>
fn disclosing(&self) -> Option<Disclosing>
While this widget is a band on its way in or out
(
motion::Disclosure: an in-window banner arriving or leaving), or a
content-sized container one moves in, how far what follows it is
drawn from where it is laid out. A moving band stands out of the
layout; its container places it (Self::place_disclosing) and
draws the widgets after it lower by transform, so they move with the
band’s edge instead of being laid out again every frame. None at
rest (the default).§fn place_disclosing(&mut self, _slot: Rect)
fn place_disclosing(&mut self, _slot: Rect)
Where a band on its way (
Disclosing::Band) stands while it is
out of the layout: its slot’s top and width (slot’s height is
zero), set by its container after each layout.§fn is_band(&self) -> bool
fn is_band(&self) -> bool
A band that comes and goes (an in-window banner): when its view
stops building it, its column draws it leaving
(
widget::Disclosing). Its column leaves it out of its identity
across rebuilds.§fn note_placement(&mut self, _placement: Placement)
fn note_placement(&mut self, _placement: Placement)
Where a band stands in its column, set by the column after each
layout: what it leaves when dropped, so the column a rebuild makes
can draw it leaving.
§fn animation_detail(&self) -> Option<String>
fn animation_detail(&self) -> Option<String>
Why this widget itself asks for animation frames, for diagnostics
that name a desktop which keeps painting.
None when it has nothing
to add to its name and geometry.§fn needs_animation_frame(&self) -> bool
fn needs_animation_frame(&self) -> bool
App polls this in Event::AboutToWait; without it a curve would
freeze until an unrelated event woke it.§fn next_wake_deadline(&self) -> Option<Instant>
fn next_wake_deadline(&self) -> Option<Instant>
Earliest wall-clock deadline at which this subtree needs a sync or
redraw with no input: the loop sleeps until then (not animation).
§fn holds_frame_until(&self, now: Instant) -> Option<Instant>
fn holds_frame_until(&self, now: Instant) -> Option<Instant>
Until when the frame that would show this subtree waits for data it
reads from this device (
crate::arriving): a local read that has
not answered and is still inside its frame budget. The host keeps
the frame on screen until then, or until the data lands, so the
person never sees the space empty and then filled. Containers
forward (the default does).§fn serve_deadline(&mut self, _now: Instant) -> bool
fn serve_deadline(&mut self, _now: Instant) -> bool
A deadline this subtree asked for (
Self::next_wake_deadline) is
due at now: do the work it was for, and say whether anything
changed. The default says it did.§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 dismiss_presented_modal(&mut self) -> bool
fn dismiss_presented_modal(&mut self) -> bool
Close every modal this subtree presents, as its own way out does (a
host whose surface is a modal sheet calls it when the shell takes the
sheet down). Whether any was presented; containers forward.
§fn presents_modal(&self) -> bool
fn presents_modal(&self) -> bool
Whether this subtree presents a modal still drawn (arriving, open or
leaving): the counterpart of
Widget::dismiss_presented_modal.§fn take_structure_dirty(&mut self) -> bool
fn take_structure_dirty(&mut self) -> bool
True if this subtree’s structural composition changed since the last
frame; reading clears it. The default drains every retained child and
reports whether any was dirty.
§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 remount_children(&mut self, remount: &mut Remount<'_>) -> bool
fn remount_children(&mut self, remount: &mut Remount<'_>) -> bool
Carry out a
StructureChange::Children this widget or one under it
reported, in the retained layout tree, through remount (see
remount). Returns false when it cannot be
carried out in place: the host then rebuilds its tree, and the change
is carried out by Self::build_layout. A widget reports such a
change until either has carried it out. The default carries out its
children’s.§fn has_pending_visual_work(&self) -> bool
fn has_pending_visual_work(&self) -> bool
Work already requested by this view whose completion will replace a
placeholder. Unlike animations, this can be awaited by still captures.
§fn has_transient_feedback(&self) -> bool
fn has_transient_feedback(&self) -> bool
Temporary feedback currently presented, such as a save acknowledgement.
Captures may intentionally include it; scene-invariance checks can wait
for it to disappear separately from unfinished placeholder work.
§fn collect_damage(&self, regions: &mut Vec<Rect>)
fn collect_damage(&self, regions: &mut Vec<Rect>)
Logical-pixel bounds whose visual output differs from the last frame. Read more
§fn damage_covers_own_box(&self) -> bool
fn damage_covers_own_box(&self) -> bool
Whether, after this frame’s draw, this widget’s own
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)
Called after this widget’s scene lands in the composed frame, to
clear a
dirty flag. Default forwards to children.§fn mark_children_drawn(&mut self)
fn mark_children_drawn(&mut self)
Rest this widget’s children after a frame drew them, for a widget that
keeps its own dirty flag: it clears the flag itself, then calls this.
§fn release_scene_cache(&mut self)
fn release_scene_cache(&mut self)
Release retained encoded-scene storage in this subtree without
marking its visual/model state dirty. Outer caches call this after a
successful reuse: while the outer display list is authoritative,
keeping byte-for-byte descendant encodings only duplicates memory.
A later outer rebuild causes descendants to record/cache normally.
§fn is_layout_dirty(&self) -> bool
fn is_layout_dirty(&self) -> bool
Default
true; widgets with a fixed intrinsic size should override
to false unless a size-affecting mutation landed. Containers MUST
forward: layout-dirty iff any descendant is.§fn composition_follows_allocation(&self) -> bool
fn composition_follows_allocation(&self) -> bool
Whether this widget composes its children from the size it was last
allocated (it reads its own rect while building its layout: a compact
layout under a width, a count of columns, an inset from a drawer).
A window resize then needs a second composition against the new
allocation, as well as the re-solve every resize gets. Widgets that
compose independently of their allocation, or that report
take_structure_dirty themselves when a new allocation changes what
they show, keep the default: a resize re-solves the retained tree in
place instead of recomposing all of it.§fn layout_needs_measure(&self) -> bool
fn layout_needs_measure(&self) -> bool
Whether a
layout_dirty frame needs taffy to re-solve sizes
(compute_layout) rather than just reposition already-solved boxes.
Scrollable is the motivating override: it translates its origin
in apply_layout without changing any taffy size, so re-solving on
every scroll frame is pure waste.§fn paint_bounds(&self) -> Rect
fn paint_bounds(&self) -> Rect
Everything this widget paints, children included;
draw_child
skips the draw when it misses the viewport. Override for widgets
that paint past their own rect.§fn draw_overlay(
&mut self,
scene: &mut Scene,
transform: Affine,
text_renderer: &mut TextRenderer,
theme: &Theme,
presence: &PresenceCtx,
)
fn draw_overlay( &mut self, scene: &mut Scene, transform: Affine, text_renderer: &mut TextRenderer, theme: &Theme, presence: &PresenceCtx, )
Top-layer pass, run once after the whole
draw
recursion, so anything emitted here composites above every sibling
regardless of tree order — the toolkit’s overlay mechanism for
content that escapes its layout box (an open Dropdown, a
popover). Default recurses children_mut.Auto Trait Implementations§
impl Freeze for CropEditor
impl !RefUnwindSafe for CropEditor
impl !Send for CropEditor
impl !Sync for CropEditor
impl Unpin for CropEditor
impl UnsafeUnpin for CropEditor
impl !UnwindSafe for CropEditor
Blanket Implementations§
§impl<T> AsDynWidget for Twhere
T: Widget,
impl<T> AsDynWidget for Twhere
T: Widget,
§fn as_dyn_widget(&self) -> &dyn Widget
fn as_dyn_widget(&self) -> &dyn Widget
This widget as a trait object.
§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
Mutably borrows from an owned value. Read more
§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>
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>
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)
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)
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 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>
Converts
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn 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>
Converts
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which 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)
Converts
&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)
Converts
&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<(InputContent, 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>
Start the encoded operation (
type_id, payload) of kind.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>
Hand back the invocation of the toolkit control
control (its id,
as its tilo.control: resource names it).§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>
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 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>
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