Struct DataTable
pub struct DataTable<Row> { /* private fields */ }Implementations§
§impl<Row> DataTable<Row>
impl<Row> DataTable<Row>
pub const MIN_COL_WIDTH: f32 = 40.0
pub const MIN_COL_WIDTH: f32 = 40.0
Minimum column width in pixels — dragging below this clamps.
pub fn new(columns: Vec<ColumnDef<Row>>) -> DataTable<Row>
pub fn without_header(self) -> DataTable<Row>
pub fn without_header(self) -> DataTable<Row>
Leave out the header band: for a table that continues one headed above it, or whose one column needs no name.
pub fn with_row_height(self, row_height_px: f32) -> DataTable<Row>
pub fn with_row_height(self, row_height_px: f32) -> DataTable<Row>
The estimated height of a row, for rows taller than one line of text (a title over its artist) in a table that sets no viewport.
pub fn host_scrolled(self) -> DataTable<Row>
pub fn host_scrolled(self) -> DataTable<Row>
The table stands in a page its host scrolls as a whole (a painted
page with a hero above the table and more below it). The host keeps
the table’s rect on the part of it in view and tells it which rows
that is with Self::set_host_window; the table mounts and paints
only those, keeps its header at the top of that part, draws no scroll
bar of its own and leaves the wheel to the host.
pub fn set_host_window(&mut self, offset: f64, body_height: f64)
pub fn set_host_window(&mut self, offset: f64, body_height: f64)
For a Self::host_scrolled table: body_height of rows is in
view, offset below the first row’s top.
pub fn content_height(&self) -> f64
pub fn content_height(&self) -> f64
The height of the header and every row together: what a
Self::host_scrolled table takes of its host’s page.
pub fn hovered_row(&self) -> Option<usize>
pub fn hovered_row(&self) -> Option<usize>
The row under the pointer, as an index into the rows the host set.
pub fn set_pointer_position(&mut self, point: Point) -> bool
pub fn set_pointer_position(&mut self, point: Point) -> bool
Move the pointer in the table’s logical coordinate space. Embedded hosts can stage hover without constructing document state; window input uses this same pointer-tracking path.
pub fn compact(self) -> DataTable<Row>
pub fn compact(self) -> DataTable<Row>
Rows a small control tall (32 at the default scale) instead of 40: a dense grid (query results, logs).
pub fn drag_scroll(self) -> DataTable<Row>
pub fn drag_scroll(self) -> DataTable<Row>
Let a pointer drag on the body scroll it, as a finger does. Off by
default for a mouse, so a press selects at once and a drag can
begin a row drag (Self::on_row_drag_begin).
Run f(row, point, row_rect) when a row is right-clicked or asked
for its menu by assistive technology. The row is selected first,
unless it already is.
pub fn on_row_drag_begin(
self,
f: impl FnMut(usize, Point, Rect) + 'static,
) -> DataTable<Row>
pub fn on_row_drag_begin( self, f: impl FnMut(usize, Point, Rect) + 'static, ) -> DataTable<Row>
Run f(row, point, row_rect) when a pointer drag starts on a row,
to begin a drag and drop. Use Self::row_rect and
Self::row_at_point to find drop targets.
pub fn fill_height(self) -> DataTable<Row>
pub fn fill_height(self) -> DataTable<Row>
Take the height the parent gives the table and scroll the rows inside it, with the shared scroll bar.
pub fn header_height(&self) -> f64
pub fn header_height(&self) -> f64
The header band’s height at the current text scale.
pub fn tree(
self,
depth: impl Fn(&Row) -> usize + 'static,
has_children: impl Fn(&Row) -> bool + 'static,
expanded: impl Fn(&Row) -> bool + 'static,
on_toggle: impl FnMut(usize, bool) + 'static,
) -> DataTable<Row>
pub fn tree( self, depth: impl Fn(&Row) -> usize + 'static, has_children: impl Fn(&Row) -> bool + 'static, expanded: impl Fn(&Row) -> bool + 'static, on_toggle: impl FnMut(usize, bool) + 'static, ) -> DataTable<Row>
Show the rows as a flattened tree: each row indented by depth(row),
with a chevron when has_children(row) that shows expanded(row).
Pressing the chevron, or Right and Left on the selected row, calls
on_toggle(row, expand); the host refolds its rows.
pub fn set_sort_indicator(&mut self, key: impl Into<String>, ascending: bool)
pub fn set_sort_indicator(&mut self, key: impl Into<String>, ascending: bool)
Show key’s header as sorted without reordering the rows: the host
sorted them itself.
pub fn with_sort_state(
self,
state: &LocalState<Option<TableSort>>,
) -> DataTable<Row>where
Row: 'static,
pub fn with_sort_state(
self,
state: &LocalState<Option<TableSort>>,
) -> DataTable<Row>where
Row: 'static,
Sort by the column state names, and keep the order a person picks
from the headers in state, so it survives the view being built
again. Rows and their callbacks keep the host’s indices.
pub fn with_add_row(
self,
label: impl Into<String>,
on_add: impl FnMut() + 'static,
) -> DataTable<Row>
pub fn with_add_row( self, label: impl Into<String>, on_add: impl FnMut() + 'static, ) -> DataTable<Row>
A blank row after the last one that adds a row when pressed (a new
header, a new parameter); label is its placeholder.
pub fn on_check(self, f: impl FnMut(usize, bool) + 'static) -> DataTable<Row>
pub fn on_check(self, f: impl FnMut(usize, bool) + 'static) -> DataTable<Row>
Run f(row, checked) when a checkbox column’s box is toggled.
pub fn rows_mut(&mut self) -> &mut Vec<Row>
pub fn rows_mut(&mut self) -> &mut Vec<Row>
The rows, for editing in place; follow with Self::apply_changes.
pub fn apply_changes(&mut self, changes: &[TableModelChange])
pub fn apply_changes(&mut self, changes: &[TableModelChange])
Reconcile edits made through Self::rows_mut: cell controls stay
mounted by row key (so a field being typed into keeps its focus),
and only the rows named in TableModelChange::RowsChanged rebuild
theirs. Give the table a Self::with_row_key for keys that
survive inserts and removals.
pub fn row_rect(&self, index: usize) -> Option<Rect>
pub fn row_rect(&self, index: usize) -> Option<Rect>
The rect of display row index (the lift’s rect), for drop targets.
pub fn row_at_point(&self, point: Point) -> Option<usize>
pub fn row_at_point(&self, point: Point) -> Option<usize>
The display row under point, if any.
pub fn reveal_row(&mut self, index: usize)
pub fn reveal_row(&mut self, index: usize)
Scroll display row index into view, by the nearest edge.
pub fn ruled(self) -> DataTable<Row>
pub fn ruled(self) -> DataTable<Row>
Draw a rule between columns, through the header and the body: for grids the eye reads by column (a query result, a spreadsheet).
pub fn from_model<M>(columns: Vec<ColumnDef<Row>>, model: M) -> DataTable<Row>where
M: TableModel<Row = Row> + 'static,
pub fn from_model<M>(columns: Vec<ColumnDef<Row>>, model: M) -> DataTable<Row>where
M: TableModel<Row = Row> + 'static,
Construct a sparse table backed by an arbitrary model. Geometry and
selection remain proportional to visible/measured rows rather than
model.len().
pub fn with_id(self, id: impl Into<String>) -> DataTable<Row>
pub fn with_id(self, id: impl Into<String>) -> DataTable<Row>
Give this table a stable app-test/inspection id. The historical
default is data_table; set an explicit id when an app has more than
one table.
pub fn with_accessible_name(self, name: impl Into<String>) -> DataTable<Row>
pub fn with_accessible_name(self, name: impl Into<String>) -> DataTable<Row>
Give the table itself a localized screen-reader label. Column headers continue to label individual cells.
pub fn selectable(self, v: bool) -> DataTable<Row>
pub fn set_selection(&mut self, sel: SelectionModel)
pub fn selection(&self) -> &SelectionModel
pub fn selection_mut(&mut self) -> &mut SelectionModel
pub fn model_selection(&self) -> &KeySelection<u64>
pub fn model_selection(&self) -> &KeySelection<u64>
Stable-key selection used by model-backed tables.
pub fn model_selection_mut(&mut self) -> &mut KeySelection<u64>
pub fn model_selection_mut(&mut self) -> &mut KeySelection<u64>
Mutable stable-key selection used by model-backed tables.
pub fn with_model_selection(
self,
selection: KeySelection<u64>,
) -> DataTable<Row>
pub fn with_model_selection( self, selection: KeySelection<u64>, ) -> DataTable<Row>
Restore stable-key selection for a model-backed table, discarding keys absent from the current model.
pub fn with_selection(self, sel: SelectionModel) -> DataTable<Row>
pub fn on_row_click<F>(self, f: F) -> DataTable<Row>
pub fn on_row_click<F>(self, f: F) -> DataTable<Row>
Run f(row, ctrl, shift) when a row is clicked. Every row callback
names the row by its index in the rows the host set
(Self::set_rows), however the table has sorted them.
pub fn on_activate<F>(self, f: F) -> DataTable<Row>
pub fn on_header_click<F>(self, f: F) -> DataTable<Row>
pub fn with_row_key<F>(self, key: F) -> DataTable<Row>
pub fn with_row_key<F>(self, key: F) -> DataTable<Row>
Give rows stable model identity so scroll anchoring and cached measurements survive inserts, removals, and sorting. Duplicate values are disambiguated by occurrence order; unique keys provide the strongest continuity.
pub fn set_rows(&mut self, rows: Vec<Row>)
pub fn select_row(&mut self, row: usize)
pub fn select_row(&mut self, row: usize)
Select only the host’s row row (an index into the rows set with
Self::set_rows), wherever sorting shows it.
pub fn selected_rows(&self) -> Vec<usize>
pub fn selected_rows(&self) -> Vec<usize>
The selected rows as indices into the rows the host set, in the order the table shows them.
pub fn columns(&self) -> &[ColumnDef<Row>]
pub fn notify_model_changed(&mut self)
pub fn notify_model_changed(&mut self)
Reconcile an externally changed model. The first visible stable key, measured heights, and key selection survive moves and inserts.
pub fn notify_model_changes(&mut self, changes: &[TableModelChange])
pub fn notify_model_changes(&mut self, changes: &[TableModelChange])
Reconcile one already-applied model change batch. Structural changes
retain visible cell controls whose stable keys still exist, while
RowsChanged rebuilds controls only for the named keys.
pub fn sort_state(&self) -> Option<(&str, bool)>
pub fn sort_by_with<F>(&mut self, cmp: F, key: &str, ascending: bool)
pub fn sort_by_with<F>(&mut self, cmp: F, key: &str, ascending: bool)
Stores the comparator + key + direction so set_rows re-applies the
same ordering automatically. Model-backed tables delegate sorting to
TableModel::sort_by instead.
pub fn sort_by(&mut self, column_key: &str, ascending: bool) -> bool
pub fn sort_by(&mut self, column_key: &str, ascending: bool) -> bool
Reuses the comparator already installed via Self::sort_by_with;
returns false when none is installed for column_key. Per-column
comparators can’t be encoded as pure (key, direction), so callers
install one typed comparator, then header-click/keyboard handlers flip
direction through this simpler entry point.
pub fn column_width_px(&self, key: &str) -> Option<f32>
pub fn column_width_px(&self, key: &str) -> Option<f32>
Falls back to ColumnWidth::Fixed; Flex/Auto columns return None
until resized since their pixel value depends on the layout pass.
pub fn begin_resize(&mut self, key: &str, pointer_x: f32)
pub fn begin_resize(&mut self, key: &str, pointer_x: f32)
Subsequent drag_resize calls compute the new width as
origin_w + (pointer_x - origin_x).
pub fn drag_resize(&mut self, pointer_x: f32)
pub fn drag_resize(&mut self, pointer_x: f32)
Clamps to MIN_COL_WIDTH.
pub fn end_resize(&mut self)
pub fn set_viewport(&mut self, height_px: f32, row_height_px: f32)
pub fn set_viewport(&mut self, height_px: f32, row_height_px: f32)
Enables the visible_row_range windowing so only rows intersecting
the viewport (plus overscan) are rendered.
pub fn with_viewport(self, height_px: f32, row_height_px: f32) -> DataTable<Row>
pub fn with_viewport(self, height_px: f32, row_height_px: f32) -> DataTable<Row>
Fluent form of Self::set_viewport for app constructors.
pub fn set_scroll_y(&mut self, y: f32)
pub fn scroll_y(&self) -> f32
pub fn set_row_height(&mut self, display_index: usize, height_px: f32) -> bool
pub fn set_row_height(&mut self, display_index: usize, height_px: f32) -> bool
Override one display row’s measured height while keeping the current
stable anchor fixed. Returns false when display_index is absent or
geometry did not change.
pub fn visible_row_range(&self) -> (usize, usize)
pub fn visible_row_range(&self) -> (usize, usize)
(start, end) row-index range (half-open), with two estimated row
heights of pixel overscan on each side. With no viewport set, the
entire row list is returned.
pub fn mounted_cell_count(&self) -> usize
pub fn mounted_cell_count(&self) -> usize
Number of retained cell controls. This remains proportional to the visible window, not the logical model size.
pub fn max_scroll_y(&self) -> f32
pub fn max_scroll_y(&self) -> f32
content - viewport, floored at 0.
pub fn scrollbar_thumb(&self) -> Option<Rect>
pub fn scrollbar_thumb(&self) -> Option<Rect>
None when the bar is inactive (no viewport set, or rows fit).
pub fn toggle_sort(&mut self, index: usize) -> Option<(String, bool)>where
Row: 'static,
pub fn toggle_sort(&mut self, index: usize) -> Option<(String, bool)>where
Row: 'static,
Sort by column index, or flip the order when it already sorts by
it; the column’s own comparator orders the rows (see
ColumnDef::sorted_by). None if the column does not sort.
Trait Implementations§
§impl<Row> Widget for DataTable<Row>where
Row: 'static,
impl<Row> Widget for DataTable<Row>where
Row: 'static,
§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
Measure ColumnWidth::Auto columns from their header and the
visible cells, never narrower than four characters’ worth of line.
§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
Route an assistive technology’s action to the row it was aimed at.
The table paints its own rows and cells, so they reach an AT as synthetic
nodes rather than as child widgets; without this, an AT could describe
row 4 but activating it would land a click in the middle of the table.
key_path is [row] for a row and [row, column] for a cell — the
checkbox cells toggle their own checked value; other cells activate
their row.
Rows carry no explicit key, so the path element is the row’s display
index (its ordinal among the table’s synthetic children); the
callbacks it reaches name the host’s row, as on_row_click does.
§fn set_interaction_environment(&mut self, environment: InteractionEnvironment)
fn set_interaction_environment(&mut self, environment: InteractionEnvironment)
§fn update(
&mut self,
state: &(dyn Any + 'static),
path: &(dyn Any + 'static),
) -> bool
fn update( &mut self, state: &(dyn Any + 'static), path: &(dyn Any + 'static), ) -> bool
Widget::children_mut returns, without short-circuiting, so a
container never freezes its descendants at build-time state; a widget
overrides it to check state of its own and then forward.fn build_layout( &mut self, taffy: &mut TaffyTree, theme: &Theme, node_map: &mut HashMap<NodeId, *mut dyn Widget>, ) -> NodeId
§fn apply_layout(&mut self, taffy: &TaffyTree, node: NodeId, origin: Point)
fn apply_layout(&mut self, taffy: &TaffyTree, node: NodeId, origin: Point)
§fn draw(
&mut self,
scene: &mut Scene,
transform: Affine,
text_renderer: &mut TextRenderer,
theme: &Theme,
presence: &PresenceCtx,
)
fn draw( &mut self, scene: &mut Scene, transform: Affine, text_renderer: &mut TextRenderer, theme: &Theme, presence: &PresenceCtx, )
scene. The default paints nothing.§fn handle_event(&mut self, event: &WindowEvent, ctx: &mut EventCtx<'_>)
fn handle_event(&mut self, event: &WindowEvent, ctx: &mut EventCtx<'_>)
fn wants_pointer_capture(&self) -> bool
§fn needs_animation_frame(&self) -> bool
fn needs_animation_frame(&self) -> bool
App polls this in Event::AboutToWait; without it a curve would
freeze partway until an unrelated event woke it again.fn children(&self) -> Vec<&dyn Widget>
§fn for_each_child(&self, visitor: &mut dyn FnMut(&dyn Widget))
fn for_each_child(&self, visitor: &mut dyn FnMut(&dyn Widget))
Self::children; toolkit
containers override this to walk their retained storage directly.fn children_mut(&mut self) -> Vec<&mut dyn Widget>
§fn accessibility_child_path(&self, child_index: usize) -> Option<Vec<usize>>
fn accessibility_child_path(&self, child_index: usize) -> Option<Vec<usize>>
children entry beneath a
nested path of synthetic children returned by
accessibility. Read more§fn take_structure_dirty(&mut self) -> bool
fn take_structure_dirty(&mut self) -> bool
false. A container that changes its own child list sets its own flag
and ORs it with this traversal.§fn is_layout_dirty(&self) -> bool
fn is_layout_dirty(&self) -> bool
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 layout_needs_measure(&self) -> bool
fn layout_needs_measure(&self) -> bool
layout_dirty frame needs taffy to re-solve sizes
(compute_layout) rather than just reposition already-solved boxes.
Scrollable is the motivating override: it translates its origin
in apply_layout without changing any taffy size, so re-solving on
every scroll frame is pure waste.fn name(&self) -> &'static str
§fn test_id(&self) -> Option<&str>
fn test_id(&self) -> Option<&str>
None falls back to a path-based
key. Must be unique across the live tree — the registry resolves on
first match, so a duplicate shadows the second occurrence.§fn get_rect(&self) -> Rect
fn get_rect(&self) -> Rect
fn is_focusable(&self) -> bool
fn set_focus(&mut self, focused: bool)
fn is_focused(&self) -> bool
§fn accessibility(&self) -> Option<AccessNode>
fn accessibility(&self) -> Option<AccessNode>
AccessState. Default None means
presentational: the node is skipped and children reparent onto the
parent. State must be derived, not stored so it can’t drift from
draw; names must already be i18n!-resolved.§fn perform_semantic_action(
&mut self,
target: &str,
action: &Action,
_state: &mut Edits<'_>,
_path: &(dyn Any + 'static),
) -> bool
fn perform_semantic_action( &mut self, target: &str, action: &Action, _state: &mut Edits<'_>, _path: &(dyn Any + 'static), ) -> bool
target is the opaque stable value supplied through
AccessNode::with_action_target. Read more§fn native_input_snapshot(
&self,
_state: &(dyn Any + 'static),
_path: &(dyn Any + 'static),
) -> Option<Value>
fn native_input_snapshot( &self, _state: &(dyn Any + 'static), _path: &(dyn Any + 'static), ) -> Option<Value>
§fn view_only_scroll(&self, _event: &WindowEvent) -> bool
fn view_only_scroll(&self, _event: &WindowEvent) -> bool
sync. The runner
still lays out, paints and refreshes accessibility geometry. Unknown
handlers stay on the full synchronization/publication path.§fn primary_vertical_scroll(&self) -> Option<PrimaryScrollRegion>
fn primary_vertical_scroll(&self) -> Option<PrimaryScrollRegion>
fn apply_primary_vertical_scroll( &mut self, _action: PrimaryScrollAction, ) -> PrimaryScrollResult
§fn callback_binding(&self) -> Option<CallbackBinding>
fn callback_binding(&self) -> Option<CallbackBinding>
§fn has_separate_document_owner(&self) -> bool
fn has_separate_document_owner(&self) -> bool
§fn history_owner(&self) -> Option<HistoryOwner>
fn history_owner(&self) -> Option<HistoryOwner>
§fn record_owners(&self) -> Vec<HistoryOwner>
fn record_owners(&self) -> Vec<HistoryOwner>
crate::record::person). They take no part in this
widget’s history or controls.§fn provide<'a>(&'a self, _request: &mut Request<'a, '_>)
fn provide<'a>(&'a self, _request: &mut Request<'a, '_>)
capability). Declare capabilities with crate::provides!.§fn provide_mut<'a>(&'a mut self, _request: &mut RequestMut<'a, '_>)
fn provide_mut<'a>(&'a mut self, _request: &mut RequestMut<'a, '_>)
Widget::provide.§fn mount_native_views(&mut self, host: &NativeViewHost<'_>)
fn mount_native_views(&mut self, host: &NativeViewHost<'_>)
§fn unmount_native_views(&mut self)
fn unmount_native_views(&mut self)
§fn native_view_frame_start(&mut self)
fn native_view_frame_start(&mut self)
§fn set_platform_conventions(&mut self, conventions: PlatformConventions)
fn set_platform_conventions(&mut self, conventions: PlatformConventions)
§fn sync(&mut self, state: &(dyn Any + 'static), path: &(dyn Any + 'static))
fn sync(&mut self, state: &(dyn Any + 'static), path: &(dyn Any + 'static))
Widget::children_mut returns; a widget overrides it only to
read state of its own, or to sync children it does not expose there.§fn settle(&mut self, edits: &mut Edits<'_>, path: &ExId)
fn settle(&mut self, edits: &mut Edits<'_>, path: &ExId)
edits (a resource’s
dispatcher); the host syncs again when the document changed. The
default settles the children Widget::children_mut returns.fn 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>
None means the widget has no such policy; ordinary manual widgets remain
valid. Values are available after build/settlement and carry real origins.§fn observe_physical_input(&mut self, _input: PhysicalInput)
fn observe_physical_input(&mut self, _input: PhysicalInput)
§fn local_resource_operation_handlers(&self) -> &'static [&'static str]
fn local_resource_operation_handlers(&self) -> &'static [&'static str]
fn resource_operation_handlers(&self) -> HashSet<String>
§fn as_any(&self) -> Option<&(dyn Any + 'static)>
fn as_any(&self) -> Option<&(dyn Any + 'static)>
dyn Widget. Default None (a widget may borrow
and so not be 'static); a widget opts in with Some(self), and a
Decorator answers itself.fn as_any_mut(&mut self) -> Option<&mut (dyn Any + 'static)>
§fn reveal_descendant(&mut self, target: *const dyn Widget) -> bool
fn reveal_descendant(&mut self, target: *const dyn Widget) -> bool
§fn test_rects(&self) -> Vec<(String, Rect)>
fn test_rects(&self) -> Vec<(String, Rect)>
Widget::get_rect; zero-area entries are dropped.§fn child_clip_rect(&self) -> Option<Rect>
fn child_clip_rect(&self) -> Option<Rect>
§fn take_action_palette_request(&mut self) -> Option<ActionAddress>
fn take_action_palette_request(&mut self) -> Option<ActionAddress>
resources().§fn take_search_request(&mut self) -> bool
fn take_search_request(&mut self) -> bool
§fn 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
point (logical coords, same space as Widget::get_rect). Read more§fn tooltip(&self) -> Option<&str>
fn tooltip(&self) -> Option<&str>
crate::widget::tooltip::TooltipHost),
hit-tested like cursor_shape so containers
need not forward it. An icon-only control should also use this as
its accessible name.§fn tooltip_side(&self) -> TooltipSide
fn tooltip_side(&self) -> TooltipSide
fn tooltip_target_at(&self, point: Point) -> Option<(Rect, String)>
§fn is_default_keyboard_focus(&self) -> bool
fn is_default_keyboard_focus(&self) -> bool
§fn keyboard_input_scope(&self) -> Option<u64>
fn keyboard_input_scope(&self) -> Option<u64>
§fn set_invalid(&mut self, _invalid: bool)
fn set_invalid(&mut self, _invalid: bool)
Field::with_error: an invalid control edges itself in danger ink
and reports invalid to assistive technology. Controls without a
field face ignore it.§fn focus_requested(&mut self, target: Option<NodeId>, tree: &TaffyTree)
fn focus_requested(&mut self, target: Option<NodeId>, tree: &TaffyTree)
§fn wants_tab_input(&self) -> bool
fn wants_tab_input(&self) -> bool
§fn ime_cursor_rect(&self) -> Option<Rect>
fn ime_cursor_rect(&self) -> Option<Rect>
Some enables IME for the focused widget and
positions its candidate window; non-text controls keep the default
None and therefore disable IME.§fn traps_focus(&self) -> bool
fn traps_focus(&self) -> bool
true, the host restricts Tab/directional
focus to this subtree (wrapping at the ends) and restores the prior
focus once it goes back to false. Default false.§fn synthetic_accessibility_rect(&self, _path: &[usize]) -> Option<Rect>
fn synthetic_accessibility_rect(&self, _path: &[usize]) -> Option<Rect>
AccessNode::children. The path is
its child-index path beneath this widget’s accessibility node. Returning
a rect lets AccessKit activation inject the same click as pointer input.§fn focus_synthetic_accessibility(&mut self, _path: &[usize]) -> bool
fn focus_synthetic_accessibility(&mut self, _path: &[usize]) -> bool
§fn accessibility_child_parent(&self, _child_index: usize) -> Option<usize>
fn accessibility_child_parent(&self, _child_index: usize) -> Option<usize>
children entry beneath a
synthetic child returned by accessibility.
The returned index addresses AccessNode::children for this frame.
Collections use this to place a real interactive row delegate inside
its virtual ListItem/TreeItem instead of exporting a duplicate.§fn accessibility_represents_child(&self, _child_index: usize) -> bool
fn accessibility_represents_child(&self, _child_index: usize) -> bool
children entry is already
represented in this widget’s own synthetic
accessibility tree, so the bridge must not
export it a second time. A host that publishes a child’s semantics
itself (to add its own controls inside the same dialog) answers true
for that child; assistive technology then sees one copy, not two.§fn is_enabled(&self) -> bool
fn is_enabled(&self) -> bool
false) widget is excluded from focus traversal, must
reject input in handle_event, and renders dimmed (see
DISABLED_ALPHA).§fn ime_requires_deferred_ack(&self) -> bool
fn ime_requires_deferred_ack(&self) -> bool
§fn start_deferred_text(&mut self) -> Option<Receipt>
fn start_deferred_text(&mut self) -> Option<Receipt>
§fn commit_deferred_text(&mut self, text: &str) -> Option<Receipt>
fn commit_deferred_text(&mut self, text: &str) -> Option<Receipt>
§fn ime_purpose(&self) -> Option<ImePurpose>
fn ime_purpose(&self) -> Option<ImePurpose>
text-input-v3, native IMEs elsewhere). None is intentionally the
default: enabling an IME for buttons, canvas tools or games makes the
compositor raise an on-screen keyboard over content that cannot accept
the committed text. Read more§fn ime_multiline(&self) -> bool
fn ime_multiline(&self) -> bool
§fn ime_edit_fingerprint(&self, key: &[u8; 32]) -> Option<[u8; 32]>
fn ime_edit_fingerprint(&self, key: &[u8; 32]) -> Option<[u8; 32]>
§fn presented(&self) -> bool
fn presented(&self) -> bool
true; the exception is a widget standing in for a process
that has started but not drawn. Must latch: once true, never
false again for the same content, or an un-presenting widget would
make a window vanish mid-resize. What shows meanwhile is decided by
Widget::opening.§fn opening(&self) -> bool
fn opening(&self) -> bool
presented, that showing nothing would read as
broken. Delayed so a fast open never flashes an indicator.§fn text_review(&self) -> Option<(usize, String)>
fn text_review(&self) -> Option<(usize, String)>
(caret_byte, text), byte offset on a char boundary. The host diffs
this before/after an event so caret-only moves (arrows, Home/End)
get announced, not just typing.§fn on_external_event(
&mut self,
_payload: &str,
_state: &mut Edits<'_>,
_root: &(dyn Any + 'static),
)
fn on_external_event( &mut self, _payload: &str, _state: &mut Edits<'_>, _root: &(dyn Any + 'static), )
crate::app::UserEvent::External (e.g. a worker thread streaming
output into a status log). Default no-op; the App redraws and
re-syncs after dispatch, so mutating state here is enough.crate::gesture::NavGestureRecognizer and delivered to the whole
tree; return true once consumed. Default forwards to children, so
a widget that owns history becomes swipe-navigable for free.Self::on_nav_gesture would consume now. A widget
that owns history overrides this beside on_nav_gesture.§fn take_focus_reset(&mut self) -> bool
fn take_focus_reset(&mut self) -> bool
crate::app::App::autofocus_on_structure_change;
a wizard raises it on step transitions.§fn take_accessibility_request(&mut self) -> Option<AccessibilityRequest>
fn take_accessibility_request(&mut self) -> Option<AccessibilityRequest>
§fn dev_route(&self) -> Option<RouteSnapshot>
fn dev_route(&self) -> Option<RouteSnapshot>
§fn restore_dev_route(&mut self, route: &RouteSnapshot) -> bool
fn restore_dev_route(&mut self, route: &RouteSnapshot) -> bool
route back. Returns whether a router in this subtree accepted it. Read more§fn appearance_intent(&self) -> Option<AppearanceIntent>
fn appearance_intent(&self) -> Option<AppearanceIntent>
crate::app::App::appearance_reconcile — how a settings pane
re-themes the running app live without a back-channel.
Level-triggered; the App recurses Self::children itself, so
containers need not forward it. First Some wins.§fn set_motion_reduced(&mut self, reduced: bool)
fn set_motion_reduced(&mut self, reduced: bool)
§fn needs_idle_sync(&self) -> bool
fn needs_idle_sync(&self) -> bool
sync still needs to run on idle frames without input or
collab events — e.g. waiting out a document-adoption grace window.§fn take_committed_action(&mut self) -> Option<Vec<ChangeHash>>
fn take_committed_action(&mut self) -> Option<Vec<ChangeHash>>
tilo_actions action its
ActionSpec exports, it reports the
document heads captured just before here, so the host can record
one undo boundary the same way a palette dispatch does. Rising-edge:
reading MUST clear it.§fn keeps_undo_step_open(&self) -> bool
fn keeps_undo_step_open(&self) -> bool
§fn set_undo_status(&mut self, _status: &mut dyn FnMut() -> UndoStatus)
fn set_undo_status(&mut self, _status: &mut dyn FnMut() -> UndoStatus)
§fn take_undo_request(&mut self) -> Option<UndoRequest>
fn take_undo_request(&mut self) -> Option<UndoRequest>
§fn handle_local_undo_request(&mut self, request: UndoRequest) -> bool
fn handle_local_undo_request(&mut self, request: UndoRequest) -> bool
§fn apply_room_action(
&mut self,
_doc: &mut Edits<'_>,
_type_id: &str,
_payload: &[u8],
) -> bool
fn apply_room_action( &mut self, _doc: &mut Edits<'_>, _type_id: &str, _payload: &[u8], ) -> bool
type_id is silently
declined, not an error.§fn start_operation(
&mut self,
op: &ResourceOperation<'_>,
doc: &mut Edits<'_>,
path: &ExId,
) -> Result<Option<ResourceOperationStart>, String>
fn start_operation( &mut self, op: &ResourceOperation<'_>, doc: &mut Edits<'_>, path: &ExId, ) -> Result<Option<ResourceOperationStart>, String>
§fn semantic_readers(&self) -> &'static [RegisteredSemanticReader]
fn semantic_readers(&self) -> &'static [RegisteredSemanticReader]
§fn poll_resource_operation(
&mut self,
invocation: InvocationId,
cancellation_requested: bool,
doc: &AutoCommit,
path: &ExId,
) -> Option<InvocationUpdate>
fn poll_resource_operation( &mut self, invocation: InvocationId, cancellation_requested: bool, doc: &AutoCommit, path: &ExId, ) -> Option<InvocationUpdate>
§fn next_wake_deadline(&self) -> Option<Instant>
fn next_wake_deadline(&self) -> Option<Instant>
needs_animation_frame, this keeps
the event loop asleep until the requested instant and is appropriate
for filesystem/status polling rather than animation.§fn modal_capture(&self) -> Option<Rect>
fn modal_capture(&self) -> Option<Rect>
Some(rect) when this subtree holds an open modal, its panel box.
While any widget reports Some, the host suppresses its own global
focus shortcuts and swallows unhandled pointer presses so nothing
behind the modal is clickable. Containers MUST forward (the default
does, via first Some among children).§fn take_structure_change(&mut self) -> StructureChange
fn take_structure_change(&mut self) -> StructureChange
Self::take_structure_dirty, saying whether the frame’s damage can
still describe the rebuild (StructureChange::Described). Reading
clears what take_structure_dirty clears; the two must agree on
whether there is a change. The default is the flag, as a
StructureChange::Rebuild: only a widget that knows every pixel its
change touches lands in its own damage says less, and a container
forwards a child’s StructureChange::Described only by overriding
this.§fn has_pending_visual_work(&self) -> bool
fn has_pending_visual_work(&self) -> bool
§fn has_transient_feedback(&self) -> bool
fn has_transient_feedback(&self) -> bool
§fn needs_redraw(&self) -> bool
fn needs_redraw(&self) -> bool
true (dirty every frame). Opt into incremental redraw by
tracking a dirty: bool, setting it in handle_event/sync, and
clearing it in mark_drawn(). Containers MUST forward: dirty iff any
descendant is.§fn collect_damage(&self, regions: &mut Vec<Rect>)
fn collect_damage(&self, regions: &mut Vec<Rect>)
§fn damage_covers_own_box(&self) -> bool
fn damage_covers_own_box(&self) -> bool
Self::collect_damage covers every pixel a relayout changed by
moving or resizing its layout box: a host that repaints where moved
widgets were and are may then leave this widget’s box to it (its
children’s boxes still count). A block editor that grew by a
paragraph says where its blocks were and are; the default does not
claim it.§fn mark_drawn(&mut self)
fn mark_drawn(&mut self)
dirty flag. Default forwards to children.§fn release_scene_cache(&mut self)
fn release_scene_cache(&mut self)
§fn paint_bounds(&self) -> Rect
fn paint_bounds(&self) -> Rect
draw_child
skips the draw when it misses the viewport. Override for widgets
that paint past their own rect.§fn draw_overlay(
&mut self,
scene: &mut Scene,
transform: Affine,
text_renderer: &mut TextRenderer,
theme: &Theme,
presence: &PresenceCtx,
)
fn draw_overlay( &mut self, scene: &mut Scene, transform: Affine, text_renderer: &mut TextRenderer, theme: &Theme, presence: &PresenceCtx, )
draw
recursion, so anything emitted here composites above every sibling
regardless of tree order — the toolkit’s overlay mechanism for
content that escapes its layout box (an open Dropdown, a
popover). Default recurses children_mut.Auto Trait Implementations§
impl<Row> Freeze for DataTable<Row>
impl<Row> !RefUnwindSafe for DataTable<Row>
impl<Row> !Send for DataTable<Row>
impl<Row> !Sync for DataTable<Row>
impl<Row> Unpin for DataTable<Row>where
Row: Unpin,
impl<Row> UnsafeUnpin for DataTable<Row>
impl<Row> !UnwindSafe for DataTable<Row>
Blanket Implementations§
§impl<T> AudiencePresentationWidgetExt for T
impl<T> AudiencePresentationWidgetExt for T
fn audience_presentation_request(&self) -> Option<AudiencePresentationRequest>
fn on_audience_presentation_changed(&mut self, active: bool)
fn draw_audience_presentation( &mut self, scene: &mut Scene, transform: Affine, text_renderer: &mut TextRenderer, theme: &Theme, rect: Rect, ) -> bool
fn handle_audience_presentation_event( &mut self, event: &WindowEvent, state: &mut Edits<'_>, path: &ExId, ) -> bool
fn on_audience_presentation_closed(&mut self)
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> CompleteContentWidgetExt for T
impl<T> CompleteContentWidgetExt for T
fn complete_content_size(&self) -> Option<Size>
fn draw_complete_content( &mut self, scene: &mut Scene, bounds: Rect, transform: Affine, text_renderer: &mut TextRenderer, theme: &Theme, presence: &PresenceCtx, ) -> bool
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.§impl<T> FloatingSurfaceWidgetExt for T
impl<T> FloatingSurfaceWidgetExt for T
fn on_floating_surface_focus_changed(&mut self, id: Option<&str>, focused: bool)
fn on_floating_surface_ime_source_changed(&mut self, id: Option<&str>)
fn on_floating_surface_event_source(&mut self, id: Option<&str>)
fn floating_surface_accessibility(&self, id: &str) -> Option<AccessNode>
fn perform_floating_surface_accessibility_action( &mut self, id: &str, target: &str, action: &Action, state: &mut Edits<'_>, path: &ExId, ) -> bool
fn floating_surface_ime(&self, id: &str) -> Option<(ImePurpose, Rect)>
fn take_floating_surface_request(&mut self) -> Option<FloatingSurfaceRequest>
fn take_capture_studio_request(&mut self) -> Option<CaptureMode>
fn take_floating_surface_source_updates(&mut self) -> Vec<(String, Rect)>
fn draw_floating_surfaces( &mut self, scene: &mut Scene, transform: Affine, text_renderer: &mut TextRenderer, theme: &Theme, presence: &PresenceCtx, )
fn draw_floating_surface( &mut self, id: &str, scene: &mut Scene, transform: Affine, text_renderer: &mut TextRenderer, theme: &Theme, presence: &PresenceCtx, ) -> bool
fn floating_surface_presentations(&self) -> Vec<FloatingSurfacePresentation>
fn active_floating_surface_ids(&self) -> Vec<String>
fn set_floating_surface_bounds(&mut self, bounds: Rect)
fn on_floating_surface_host_message( &mut self, message: &FloatingSurfaceHostMessage, )
§impl<T> FullscreenWidgetExt for T
impl<T> FullscreenWidgetExt for T
fn fullscreen_intent(&self) -> Option<bool>
fn fullscreen_params(&self) -> FullscreenRequest
fn on_fullscreen_changed(&mut self, active: bool)
Source§impl<W> HostDelivery for W
impl<W> HostDelivery for W
Source§fn start_encoded(
&mut self,
kind: OperationKind,
type_id: &str,
payload: &[u8],
doc: &mut AutoCommit,
path: &ExId,
) -> Result<Option<Effected>, String>
fn start_encoded( &mut self, kind: OperationKind, type_id: &str, payload: &[u8], doc: &mut AutoCommit, path: &ExId, ) -> Result<Option<Effected>, String>
Source§fn deliver_control(
&mut self,
kind: OperationKind,
control: &str,
doc: &mut AutoCommit,
path: &ObjId,
) -> Result<Option<Effected>, String>
fn deliver_control( &mut self, kind: OperationKind, control: &str, doc: &mut AutoCommit, path: &ObjId, ) -> Result<Option<Effected>, String>
control (its id,
as its tilo.control: resource names it). Read more§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more