Struct TabBar
pub struct TabBar {
pub pending_drag: Option<DragPayload>,
pub pending_reorder: Option<(usize, usize)>,
pub pending_close: Option<u64>,
pub pending_max: Option<u64>,
pub pending_search: Option<u64>,
pub pending_new_tab: Option<()>,
pub pending_detach: Option<(u64, Point)>,
/* private fields */
}Fields§
§pending_drag: Option<DragPayload>§pending_reorder: Option<(usize, usize)>§pending_close: Option<u64>§pending_max: Option<u64>§pending_search: Option<u64>§pending_new_tab: Option<()>§pending_detach: Option<(u64, Point)>(tab_id, release_point) when a drag is released outside this bar’s rect,
for a parent (e.g. GroupRow) to resolve the drop target.
Implementations§
§impl TabBar
impl TabBar
pub fn begin_rename(&mut self, id: u64, name: &str) -> bool
pub fn begin_rename(&mut self, id: u64, name: &str) -> bool
Turn tab id’s title into a field holding it, all of it selected,
where the title stands. name is what a reader announces the field
as. Returns whether the edit is open; a tab drawn as an icon alone
has no title to edit.
pub fn rename_hit(&self, p: Point) -> bool
pub fn rename_hit(&self, p: Point) -> bool
Whether p is on the name field: a press there places the caret
rather than ending the edit.
pub fn rename_text(&self) -> Option<&str>
pub fn rename_text(&self) -> Option<&str>
The name field’s text while it is edited.
pub fn rename_event(
&mut self,
event: &WindowEvent,
ctx: &mut EventCtx<'_>,
) -> bool
pub fn rename_event( &mut self, event: &WindowEvent, ctx: &mut EventCtx<'_>, ) -> bool
Hand an event to the name field while a tab is being named. The keyboard is the field’s whole (typing never reaches the window under it); a press on the field is the field’s, and a press anywhere else commits the name and goes on to what is under it. Returns whether the field took the event.
pub fn commit_rename(&mut self) -> bool
pub fn commit_rename(&mut self) -> bool
Commit the name being edited, as Enter does. Returns whether a tab was being named.
pub fn cancel_rename(&mut self) -> bool
pub fn cancel_rename(&mut self) -> bool
Put the title back, ending the edit, as Escape does. Returns whether a tab was being named.
pub fn take_rename(&mut self) -> Option<(u64, String)>
pub fn take_rename(&mut self) -> Option<(u64, String)>
A name committed in place since the last call: the tab, and the name (empty when the person cleared it).
§impl TabBar
impl TabBar
Mark id as a window shared with its workspace, seen by whom
shared names, or clear the mark. true when that changed what the
bar shows.
Who can see the window id, while it is shared.
Mark id as a window someone else shared with the workspace,
whose shared names, or clear the mark. true when that changed
what the bar shows.
Whose the window id is, while someone else shares it here.
Where the share mark of the window in front stands, with its label:
the chip, then the faces of the people who see the window, or of the
person whose it is.
After the bar’s other status chips, or, where the window’s app put
its slots in the bar, right after its location. None when the
window in front is not shared, a tab is being dragged, or there is
no room for it.
pub fn set_dev_build(&mut self, id: u64, installer: Option<String>) -> bool
pub fn set_dev_build(&mut self, id: u64, installer: Option<String>) -> bool
Mark id as running a developer’s build installed by installer,
or clear the mark. true when that changed what the bar shows.
pub fn dev_build_chip(
&self,
tr: &mut TextRenderer,
theme: &Theme,
) -> Option<(Rect, String)>
pub fn dev_build_chip( &self, tr: &mut TextRenderer, theme: &Theme, ) -> Option<(Rect, String)>
Where the “Dev build by …” mark of the window in front stands,
with its label: after the “Controls your desktop” chip when that
shows. None when the window in front runs no developer’s build, its
app put slots in the row, a tab is being dragged, or the run is too
short for it.
pub fn set_desktop_control(&mut self, id: u64, on: bool) -> bool
pub fn set_desktop_control(&mut self, id: u64, on: bool) -> bool
Mark id as a window whose app may control the desktop, or clear
the mark. true when that changed what the bar shows.
pub fn controls_desktop(&self, id: u64) -> bool
pub fn take_desktop_control_press(&mut self) -> Option<(u64, Rect)>
pub fn take_desktop_control_press(&mut self) -> Option<(u64, Rect)>
A press on the chip, once: the tab it was on and where the chip stands, for the host’s menu to hang from.
pub fn desktop_control_chip(
&self,
tr: &mut TextRenderer,
theme: &Theme,
) -> Option<(Rect, String)>
pub fn desktop_control_chip( &self, tr: &mut TextRenderer, theme: &Theme, ) -> Option<(Rect, String)>
Where the “Controls your desktop” chip of the window in front stands,
with its label: after the pills, before the window’s controls. None when the window in front holds
no grant, its app put slots in the row, a tab is being dragged, or
the run is too short for it.
pub fn activate_desktop_control(&mut self) -> bool
pub fn activate_desktop_control(&mut self) -> bool
The chip activated without a pointer: report it from where it stands. Whether the bar shows it.
§impl TabBar
impl TabBar
pub const SOURCE_PILL_DIM_ALPHA: f32 = 0.35
pub const SOURCE_PILL_DIM_ALPHA: f32 = 0.35
Source pill’s opacity while the drag-ghost is visible; low enough to read as inactive but the slot still holds its place (no neighbour reflow).
pub const GHOST_PILL_ALPHA: f32 = 0.5
pub const GHOST_PILL_ALPHA: f32 = 0.5
The handle is visibly lifted but remains translucent enough for a drop target to stay legible beneath it.
pub fn new( group_id_tag: &str, tabs: Vec<TabDescriptor>, active_id: u64, ) -> TabBar
pub fn set_window_controls(&mut self, on: bool)
pub fn set_window_controls(&mut self, on: bool)
Make this a window’s bar: the window’s controls stand at its trailing end and act on the active tab, a window of one tab shows it as its title, and the tabs carry no maximize or History chips.
pub fn set_search_control(&mut self, width: Option<f64>)
pub fn set_search_control(&mut self, width: Option<f64>)
The window carries its own search control after the tabs, width wide with its gap; the
tabs leave it that room and carry no chip of their own. None gives the room back.
pub fn toolbar_search_slot(&self) -> Option<(Rect, f64)>
pub fn toolbar_search_slot(&self) -> Option<(Rect, f64)>
Where the window’s search control stands when the active tab put its slots in the bar, and
how far left an open search may reach; None without slots: it follows the tabs.
pub fn ground_color(&self, theme: &Theme) -> AlphaColor<Srgb>
pub fn ground_color(&self, theme: &Theme) -> AlphaColor<Srgb>
The colour the bar stands on, for what covers part of it.
pub fn tabs_end(&self) -> f64
pub fn tabs_end(&self) -> f64
Where the tabs end: past the last pill, or past the “+” after them; the window’s search control stands here.
pub fn search_cramped_start(&self) -> f64
pub fn search_cramped_start(&self) -> f64
How far back over the tabs the window’s search may start when a narrow window leaves its query too narrow: past the first tab’s icon, which keeps naming the window.
pub fn set_maximized(&mut self, maximized: bool)
pub fn set_maximized(&mut self, maximized: bool)
The window is maximized, so its maximize control offers restore.
pub fn set_toolbar(&mut self, id: u64, toolbar: Option<WindowToolbar>) -> bool
pub fn set_toolbar(&mut self, id: u64, toolbar: Option<WindowToolbar>) -> bool
Show the slots id’s app declared for the window’s bar, or none.
Returns whether that changed what the bar shows.
pub fn toolbar(&self, id: u64) -> Option<&WindowToolbar>
pub fn toolbar(&self, id: u64) -> Option<&WindowToolbar>
The slots id’s app declared.
pub fn set_popup_area(&mut self, area: Rect)
pub fn set_popup_area(&mut self, area: Rect)
What the menus of the active tab’s slots keep inside: the window.
pub fn location_hit(&self, p: Point) -> bool
pub fn location_hit(&self, p: Point) -> bool
Whether p is on the edited location or the suggestions under it.
pub fn take_toolbar_events(&mut self) -> Vec<(u64, ToolbarEvent)>
pub fn take_toolbar_events(&mut self) -> Vec<(u64, ToolbarEvent)>
What the person did with the apps’ slots since the last call, by tab.
pub fn take_location_drafts(&mut self) -> Vec<(u64, ToolbarEvent)>
pub fn take_location_drafts(&mut self) -> Vec<(u64, ToolbarEvent)>
What the edited location held since the last call, by tab, for the
app’s suggestions (crate::window_toolbar::ToolbarEvent::Edit).
pub fn editing_location(&self) -> bool
pub fn editing_location(&self) -> bool
Whether the active tab’s location is being edited in the bar: the bar then takes the keyboard.
pub fn edit_location(&mut self) -> bool
pub fn edit_location(&mut self) -> bool
Turn the active tab’s editable location into a field (Ctrl+L). Returns whether it did.
pub fn location_event(
&mut self,
event: &WindowEvent,
ctx: &mut EventCtx<'_>,
) -> bool
pub fn location_event( &mut self, event: &WindowEvent, ctx: &mut EventCtx<'_>, ) -> bool
Hand a keyboard or text event to the location field while it is edited. Returns whether the field took it.
pub fn cancel_location_edit(&mut self) -> bool
pub fn cancel_location_edit(&mut self) -> bool
Put the location back, ending its edit. Returns whether it was being edited.
pub fn toolbar_hit(&self, p: Point) -> bool
pub fn toolbar_hit(&self, p: Point) -> bool
Where the active tab’s slots stand, for the host’s hit tests.
pub fn location_rect(&self) -> Rect
pub fn location_rect(&self) -> Rect
Where the active tab’s location stands (Rect::ZERO for none).
pub fn toolbar_rects(&self) -> (Rect, Rect, Rect, Vec<Rect>)
pub fn toolbar_rects(&self) -> (Rect, Rect, Rect, Vec<Rect>)
Where each of the active tab’s slots stands, for tests and the host: back, forward, location, then the actions.
pub fn bar_height(&self) -> f64
pub fn bar_height(&self) -> f64
The bar’s height: one row, or two with the active tab’s slots under the tabs, and a compact window’s notice strip under those.
pub fn window_controls(&self) -> &WindowControls
pub fn window_controls(&self) -> &WindowControls
The window controls’ rects, for the host’s hit tests and tests.
pub fn control_pill_hit(&self, p: Point) -> bool
pub fn control_pill_hit(&self, p: Point) -> bool
Whether p is on the window’s controls pill, padding included: the
window’s own chrome, which no app underneath it receives.
pub fn history_action_rect(&self) -> Rect
pub fn history_action_rect(&self) -> Rect
Where the window’s History toggle stands this frame: the app’s action, on the window’s ground just before the controls’ pill.
pub fn closable(self, closable: bool) -> TabBar
pub fn closable(self, closable: bool) -> TabBar
Whether tabs close from the strip (default true). Without it no
close control is drawn, reserved or announced.
pub fn set_closable(&mut self, closable: bool) -> bool
pub fn set_closable(&mut self, closable: bool) -> bool
Offer tabs’ close controls, or take them away, on a strip already
built (closable). true when that changed what the strip offers.
pub fn closable_for_tests(&self) -> bool
pub fn closable_for_tests(&self) -> bool
Whether the strip offers its tabs’ close controls.
pub fn without_new_tab(self) -> TabBar
pub fn without_new_tab(self) -> TabBar
No new-tab control at the end of the strip.
pub fn set_new_tab(&mut self, on: bool) -> bool
pub fn set_new_tab(&mut self, on: bool) -> bool
Offer the new-tab control, or take it away (for someone who opens
nothing here). true when that changed what the bar offers.
pub fn set_mark(&mut self, id: u64, mark: Option<TabMark>)
pub fn set_mark(&mut self, id: u64, mark: Option<TabMark>)
Mark what tab id’s content is doing, or clear the mark.
pub fn mark(&self, id: u64) -> Option<TabMark>
pub fn mark_rect(&self, id: u64) -> Option<Rect>
pub fn mark_rect(&self, id: u64) -> Option<Rect>
Where tab id’s mark is painted, for hit-testing and tests.
pub fn take_mark_click(&mut self) -> Option<(u64, TabMark)>
pub fn take_mark_click(&mut self) -> Option<(u64, TabMark)>
A click on a tab’s sound mark, once: the host mutes or unmutes it.
pub fn set_group_focused(&mut self, focused: bool)
pub fn set_group_focused(&mut self, focused: bool)
The host shows which group has keyboard input: the focused group’s active tab carries a keyline in primary ink, the others the lift alone.
pub fn force_settled_for_tests(&mut self)
pub fn force_settled_for_tests(&mut self)
Pin transient pill geometry at its resting state for deterministic screenshots; production animation is unchanged.
pub fn elapse_hover_dwell(&mut self) -> bool
pub fn elapse_hover_dwell(&mut self) -> bool
Test and shot control for the hover dwell: settle the pointer intent as if the dwell had run
out. Production arms the dwell only through on_cursor_moved.
pub fn visible_title(
&mut self,
i: usize,
tr: &mut TextRenderer,
theme: &Theme,
) -> Option<String>
pub fn visible_title( &mut self, i: usize, tr: &mut TextRenderer, theme: &Theme, ) -> Option<String>
Elides with an ellipsis when the pill is too narrow — a plain clip-rect used
to slice the last glyph in half instead. None for a pinned pill.
pub fn tabs(&self) -> &[TabDescriptor]
pub fn tabs_mut(&mut self) -> &mut Vec<TabDescriptor>
pub fn active_id(&self) -> u64
pub fn set_active(&mut self, id: u64)
pub fn take_activation(&mut self) -> Option<u64>
pub fn take_activation(&mut self) -> Option<u64>
Drain the tab selected by pointer, keyboard, or accessibility input. Programmatic reconciliation deliberately does not populate this edge.
pub fn is_pinned(&self, id: u64) -> bool
pub fn set_holder(&mut self, id: u64, holder: Option<TabHolder>) -> bool
pub fn set_holder(&mut self, id: u64, holder: Option<TabHolder>) -> bool
Mark id as held by someone else (TabHolder), or clear the mark.
true when that changed what the tab offers.
pub fn pin(&mut self, id: u64)
pub fn pin(&mut self, id: u64)
Caller ensures the tab exists; a stale entry is tolerated (filtered at
render time) but should be cleaned up via unpin when the tab is removed.
pub fn unpin(&mut self, id: u64)
pub fn toggle_pin(&mut self, id: u64)
pub fn set_icon(&mut self, id: u64, icon: Option<AppImage>) -> bool
pub fn set_icon(&mut self, id: u64, icon: Option<AppImage>) -> bool
Replace tab id’s artwork. true when that changed what it paints.
pub fn set_attention(&mut self, id: u64, attention: bool) -> bool
pub fn set_attention(&mut self, id: u64, attention: bool) -> bool
Mark id as waiting for the person, or not. true when that
changed what it paints.
pub fn set_accent(&mut self, id: u64, color: AlphaColor<Srgb>)
pub fn set_accent(&mut self, id: u64, color: AlphaColor<Srgb>)
Tint id’s leading marker: a tab with no app_kind paints a filled dot, one with both
tints its app glyph. Pass a colour read off the Theme.
pub fn clear_accent(&mut self, id: u64)
pub fn clear_accent(&mut self, id: u64)
Drop id’s leading accent, giving the pill its leading zone back.
pub fn accent(&self, id: u64) -> Option<AlphaColor<Srgb>>
pub fn set_modified(&mut self, id: u64, modified: bool)
pub fn set_modified(&mut self, id: u64, modified: bool)
Mark id as holding unsaved changes, or clear the mark.
pub fn is_modified(&self, id: u64) -> bool
pub fn is_modified(&self, id: u64) -> bool
True if id is currently marked as holding unsaved changes.
pub fn set_show_maximize(&mut self, show: bool)
pub fn set_show_maximize(&mut self, show: bool)
Offer, or withhold, the hover-reveal maximize chip. Defaults to offered
— see Self::show_maximize for when to turn it off.
pub fn remove_tab(&mut self, id: u64) -> Option<usize>
pub fn start_closing(&mut self, id: u64) -> bool
pub fn start_closing(&mut self, id: u64) -> bool
Active-id shifts to the neighbour at once, so no “ghost active” frame shows during the fade; idempotent on a tab already closing, since restarting the curve would pop it back to full.
pub fn cancel_close(&mut self, id: u64) -> bool
pub fn cancel_close(&mut self, id: u64) -> bool
Restore a requested close whose host still owns the live tab. No metadata or focus is lost while the client asks for a save decision.
pub fn finalize_close(&mut self, id: u64) -> bool
pub fn finalize_close(&mut self, id: u64) -> bool
Called by WindowGroup once its own fade-out has elapsed.
pub fn has_closing(&self) -> bool
pub fn is_closing(&self, id: u64) -> bool
pub fn is_closing(&self, id: u64) -> bool
True if id is mid close-fade: gone from the live list but still rendering. Callers
reconciling against their own model check it before re-inserting a still-open item, so
cancelling a close does not pop a duplicate pill.
pub fn reorder(&mut self, from: usize, to: usize)
pub fn cancel_drag(&mut self) -> bool
pub fn cancel_drag(&mut self) -> bool
Abandon a pending or lifted tab without turning its release into a drop.
pub fn set_carriable(&mut self, carriable: bool)
pub fn set_carriable(&mut self, carriable: bool)
Whether the window can be carried by its bar from anywhere that is not a control (it stands on a canvas): its title and location carry it, and a click still does what it does.
pub fn control_hit(&self, p: Point) -> bool
pub fn control_hit(&self, p: Point) -> bool
Whether p is on one of the bar’s controls: the window’s own, the toolbar’s (not its
location), a tab’s close or action chip, the new-tab button, the desktop chip.
pub fn cancel_press_for_carry(&mut self)
pub fn cancel_press_for_carry(&mut self)
The press under way became a carry of the whole window: whatever it was going to do on the bar it no longer does.
pub fn popup_open(&self) -> bool
pub fn popup_open(&self) -> bool
Whether the bar has a menu, the emoji picker or the location’s suggestions open over the window.
pub fn close_popups(&mut self) -> bool
pub fn close_popups(&mut self) -> bool
Close what the bar has open over the window. Whether anything was.
pub fn drag_in_flight(&self) -> bool
pub fn dragged_tab(&self) -> Option<u64>
pub fn dragged_tab(&self) -> Option<u64>
The tab this bar is dragging, while it drags one.
pub fn take_reorder(&mut self) -> Option<(usize, usize)>
pub fn take_close(&mut self) -> Option<u64>
pub fn close_rect_for_tests(&self, tab_id: u64) -> Option<Rect>
pub fn take_max(&mut self) -> Option<u64>
pub fn take_search(&mut self) -> Option<u64>
pub fn take_history(&mut self) -> Option<(u64, HistoryControl)>
pub fn take_history(&mut self) -> Option<(u64, HistoryControl)>
A press on a pill’s History chip since the last call: the tab, and the control it showed (open History, or close it).
pub fn set_history_control(&mut self, id: u64, control: Option<HistoryControl>)
pub fn set_history_control(&mut self, id: u64, control: Option<HistoryControl>)
The History control tab id’s window offers, or None where it has
no History: one more chip in the pill’s cluster, left of search.
pub fn history_control(&self, id: u64) -> Option<HistoryControl>
pub fn take_new_tab(&mut self) -> Option<()>
pub fn new_tab_rect(&self) -> Rect
pub fn new_tab_rect(&self) -> Rect
Rect::ZERO when the pills have filled the bar and the chip is suppressed.
pub fn take_detach(&mut self) -> Option<(u64, Point)>
pub fn bar_rect(&self) -> Rect
pub fn tab_rects(&self) -> &[Rect]
pub fn max_rects(&self) -> &[Rect]
pub fn max_rects(&self) -> &[Rect]
Gated cfg(any(test, debug_assertions)) rather than cfg(test), so integration tests in
other crates can resolve the chip from live geometry.
pub fn search_rects(&self) -> &[Rect]
pub fn history_rects(&self) -> &[Rect]
pub fn action_hit_rect(&self, chip: Rect) -> Rect
pub fn action_hit_rect(&self, chip: Rect) -> Rect
A chip’s pointer target: at least the theme’s minimum on a side, centred on the glyph, never outside the bar. The painted chip keeps its width, so neighbouring targets overlap, resolved close, then maximize, then search.
pub fn drop_index_for(&self, release_point: Point) -> usize
pub fn drop_index_for(&self, release_point: Point) -> usize
Insert before the first pill whose horizontal midpoint is past
release_point.x; append if past every midpoint.
pub fn insert_tab(&mut self, idx: usize, desc: TabDescriptor)
pub fn insert_tab(&mut self, idx: usize, desc: TabDescriptor)
Used by cross-group drag routing in GroupRow::handle_event to splice a
detached tab into the target bar without forcing a full rebuild.
pub fn set_external_drag_hover(&mut self, cursor: Option<Point>)
pub fn set_external_drag_hover(&mut self, cursor: Option<Point>)
Called for every sibling bar while another group’s tab drag is in flight; a no-op while this bar has its own drag, whose moves already drive the hover.
pub fn set_on_strip(&mut self, on_strip: bool)
pub fn set_on_strip(&mut self, on_strip: bool)
Stand the bar on a docked strip of its own instead of the window ground: its tabs then lift off the strip’s ground.
Trait Implementations§
§impl Widget for TabBar
impl Widget for TabBar
§fn needs_redraw(&self) -> bool
fn needs_redraw(&self) -> bool
An undrawn bar repaints, and so does one whose own state moved since
it drew (every route that changes it says so through TabBar::touch)
or whose people are not the people it drew. Presence comes from the
frame the host lends, so the answer is right before an event or a
peek reaches the bar, not only after a draw.
§fn draw(
&mut self,
scene: &mut Scene,
transform: Affine,
tr: &mut TextRenderer,
theme: &Theme,
presence: &PresenceCtx,
)
fn draw( &mut self, scene: &mut Scene, transform: Affine, tr: &mut TextRenderer, theme: &Theme, presence: &PresenceCtx, )
A bar at rest whose own state, theme, placement and the people on
its tabs are as when it was last drawn shows that drawing again
(TabBar::replays); anything else draws it afresh.
§fn tooltip_target_at(&self, point: Point) -> Option<(Rect, String)>
fn tooltip_target_at(&self, point: Point) -> Option<(Rect, String)>
Every button in the bar names its outcome: the slots’ buttons and
the window’s controls. See [tips::TabBar::tip_at].
§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, )
The slots’ menus (overflow, suggestions) float in the window’s top layer, over the content.
§fn test_rects(&self) -> Vec<(String, Rect)>
fn test_rects(&self) -> Vec<(String, Rect)>
So a scenario clicks the rect the renderer actually painted, not a guessed coordinate. The zero-area case (chip suppressed) is filtered out by the registry.
§fn is_layout_dirty(&self) -> bool
fn is_layout_dirty(&self) -> bool
A fixed-height strip sized by its parent: only its first layout is a size change. Tab additions and removals are structural; peers arriving on or leaving a tab resize its pill for their faces.
§fn next_wake_deadline(&self) -> Option<Instant>
fn next_wake_deadline(&self) -> Option<Instant>
A dwell or an aim hold still to run out is a wait, not motion: the
host sleeps until it is due and Widget::update settles it.
§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
A dwell or aim hold that came due opens (or hands over) its pill; the relayout this asks for starts the reveal.
§fn needs_animation_frame(&self) -> bool
fn needs_animation_frame(&self) -> bool
The bar’s curves while they run, and busy arcs while they turn
(TabBar::busy_needs_frame).
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 handle_event(&mut self, event: &WindowEvent, ctx: &mut EventCtx<'_>)
fn handle_event(&mut self, event: &WindowEvent, ctx: &mut EventCtx<'_>)
fn name(&self) -> &'static str
§fn test_id(&self) -> Option<&str>
fn test_id(&self) -> Option<&str>
None falls back to a path-based
key. Must be unique across the live tree — the registry resolves on
first match, so a duplicate shadows the second occurrence.§fn 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 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 wants_pointer_capture(&self) -> bool
§fn set_interaction_environment(&mut self, environment: InteractionEnvironment)
fn set_interaction_environment(&mut self, environment: InteractionEnvironment)
§fn set_motion_reduced(&mut self, reduced: bool)
fn set_motion_reduced(&mut self, reduced: bool)
§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 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 set_window_bar_control(&mut self, in_bar: bool)
fn set_window_bar_control(&mut self, in_bar: bool)
§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;
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>
None means the widget has no such policy; ordinary manual widgets remain
valid. Values are available after build/settlement and carry real origins.§fn adjust_layout_style(
&mut self,
_taffy: &mut TaffyTree,
_node: NodeId,
_text: &mut TextRenderer,
) -> bool
fn adjust_layout_style( &mut self, _taffy: &mut TaffyTree, _node: NodeId, _text: &mut TextRenderer, ) -> bool
§fn observe_physical_input(&mut self, _input: PhysicalInput)
fn observe_physical_input(&mut self, _input: PhysicalInput)
fn 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 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))
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))
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
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 window_slot(&self, _id: String) -> Option<ToolbarAction>
fn window_slot(&self, _id: String) -> Option<ToolbarAction>
id
(crate::window_toolbar::ToolbarAction): a button’s icon and name.
None for anything that is not a button.§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 stands_for(&self, address: *const ()) -> bool
fn stands_for(&self, address: *const ()) -> bool
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>
§fn reveal_descendant(&mut self, target: *const dyn Widget) -> bool
fn reveal_descendant(&mut self, target: *const dyn Widget) -> bool
§fn child_clip_rect(&self) -> Option<Rect>
fn child_clip_rect(&self) -> Option<Rect>
§fn snap_points(&self, axis: ScrollAxis, out: &mut Vec<f32>)
fn snap_points(&self, axis: ScrollAxis, out: &mut Vec<f32>)
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>
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 touch_claim(&self, _point: Point) -> TouchClaim
fn touch_claim(&self, _point: Point) -> TouchClaim
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>
crate::widget::tooltip::TooltipHost),
hit-tested like cursor_shape so containers
need not forward it. An icon-only control should also use this as
its accessible name.§fn tooltip_side(&self) -> TooltipSide
fn tooltip_side(&self) -> TooltipSide
§fn is_default_keyboard_focus(&self) -> bool
fn is_default_keyboard_focus(&self) -> bool
§fn keyboard_input_scope(&self) -> Option<u64>
fn keyboard_input_scope(&self) -> Option<u64>
§fn set_full_bleed(&mut self, _full_bleed: bool)
fn set_full_bleed(&mut self, _full_bleed: bool)
§fn set_invalid(&mut self, _invalid: bool)
fn set_invalid(&mut self, _invalid: bool)
Field::with_error: an invalid control edges itself in danger ink
and reports invalid to assistive technology. Controls without a
field face ignore it.§fn focus_requested(&mut self, target: Option<NodeId>, tree: &TaffyTree)
fn focus_requested(&mut self, target: Option<NodeId>, tree: &TaffyTree)
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
§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 scopes_keyboard_focus(&self) -> bool
fn scopes_keyboard_focus(&self) -> bool
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>
§fn take_focus_request(&mut self) -> Option<String>
fn take_focus_request(&mut self) -> Option<String>
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 moreSelf::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>
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_child_path(&self, child_index: usize) -> Option<Vec<usize>>
fn accessibility_child_path(&self, child_index: usize) -> Option<Vec<usize>>
children entry beneath a
nested path of synthetic children returned by
accessibility. Read more§fn accessibility_represents_child(&self, _child_index: usize) -> bool
fn accessibility_represents_child(&self, _child_index: usize) -> bool
children entry is already
represented in this widget’s own synthetic
accessibility tree, so the bridge must not
export it a second time. A host that publishes a child’s semantics
itself (to add its own controls inside the same dialog) answers true
for that child; assistive technology then sees one copy, not two.§fn 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>
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
Action on this
widget, or on one of its synthetic accessibility nodes. May mutate
the CRDT like handle_event. Read more§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 ime_refuses_ordinary_commits(&self) -> bool
fn ime_refuses_ordinary_commits(&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_content(&self) -> Option<InputContent>
fn ime_content(&self) -> Option<InputContent>
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; 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
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>
§fn arrival_shape(&self) -> SkeletonShape
fn arrival_shape(&self) -> SkeletonShape
§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 minimum_window_width(&self) -> Option<f64>
fn minimum_window_width(&self) -> Option<f64>
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)>
None: the
window is the user’s and the app lays itself out in whatever it gets.§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 disclosing(&self) -> Option<Disclosing>
fn disclosing(&self) -> Option<Disclosing>
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)
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
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)
§fn animation_detail(&self) -> Option<String>
fn animation_detail(&self) -> Option<String>
None when it has nothing
to add to its name and geometry.§fn holds_frame_until(&self, now: Instant) -> Option<Instant>
fn holds_frame_until(&self, now: Instant) -> Option<Instant>
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
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
§fn presents_modal(&self) -> bool
fn presents_modal(&self) -> bool
Widget::dismiss_presented_modal.§fn take_structure_dirty(&mut self) -> bool
fn take_structure_dirty(&mut self) -> bool
§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
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
§fn has_transient_feedback(&self) -> bool
fn has_transient_feedback(&self) -> bool
§fn collect_damage(&self, regions: &mut Vec<Rect>)
fn collect_damage(&self, regions: &mut Vec<Rect>)
§fn damage_covers_own_box(&self) -> bool
fn damage_covers_own_box(&self) -> bool
Self::collect_damage covers every pixel a relayout changed by
moving or resizing its layout box: a host that repaints where moved
widgets were and are may then leave this widget’s box to it (its
children’s boxes still count). A block editor that grew by a
paragraph says where its blocks were and are; the default does not
claim it.§fn mark_drawn(&mut self)
fn mark_drawn(&mut self)
dirty flag. Default forwards to children.§fn mark_children_drawn(&mut self)
fn mark_children_drawn(&mut self)
§fn release_scene_cache(&mut self)
fn release_scene_cache(&mut self)
§fn composition_follows_allocation(&self) -> bool
fn composition_follows_allocation(&self) -> bool
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
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
draw_child
skips the draw when it misses the viewport. Override for widgets
that paint past their own rect.Auto Trait Implementations§
impl Freeze for TabBar
impl !RefUnwindSafe for TabBar
impl !Send for TabBar
impl !Sync for TabBar
impl Unpin for TabBar
impl UnsafeUnpin for TabBar
impl !UnwindSafe for TabBar
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
§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> 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>, 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>
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)
&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_event( &mut self, id: &str, event: &WindowEvent, ctx: &mut EventCtx<'_>, ) -> bool
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>
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>
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>
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