pub struct TabWidget { /* private fields */ }Expand description
All-in-one tabbed container. Builds a TabBar above a
Switcher of content panes, sharing one selection signal.
Implementations§
Source§impl TabWidget
impl TabWidget
Sourcepub fn new(selected: Signal<Option<TabId>>) -> Self
pub fn new(selected: Signal<Option<TabId>>) -> Self
Construct an empty TabWidget. Selection is None until
the first static_tab(...) / dynamic_model(...) adds a
tab and the framework activates it.
Sourcepub fn enabled(self, enabled: impl Into<Prop<bool>>) -> Self
pub fn enabled(self, enabled: impl Into<Prop<bool>>) -> Self
Enable or disable the whole widget. A disabled TabWidget greys out
and stops accepting focus / selection / keyboard input
(arena-gated). Distinct from per-tab TabInfo::enabled.
Sourcepub fn bar_visibility(
self,
visibility: impl Into<Prop<TabBarVisibility>>,
) -> Self
pub fn bar_visibility( self, visibility: impl Into<Prop<TabBarVisibility>>, ) -> Self
Set the tab-strip visibility policy (default
TabBarVisibility::Always). Use TabBarVisibility::WhenMultiple
to hide the strip while a single tab is present, or
TabBarVisibility::Never when an external selector (e.g. a
docking activity rail) drives selection.
Accepts a plain TabBarVisibility or a Signal<TabBarVisibility>.
Bound reactively, the strip appears and disappears in place — the
TabWidget itself is never torn down, so per-tab content state
(caret, scroll offset, focus) survives the flip. That is the point
of binding rather than swapping two TabWidgets in a Switcher:
an app-level “hide the chrome” mode must not cost the user their
place in the document.
A derived signal (.map(..) / .zip(..)) is fine here: binding
resolves through to the mutable roots and never calls observe.
Sourcepub fn tab_bar_height(self, dp: f32) -> Self
pub fn tab_bar_height(self, dp: f32) -> Self
Override the tab-strip height (its cross-axis extent). None /
unset keeps the style’s editor_tab_height (50 dp). Use for a denser
strip — e.g. dock side panels.
Sourcepub fn compact_bar(self) -> Self
pub fn compact_bar(self) -> Self
Shorthand for a compact (38 dp) tab strip — denser than the standard
50 dp editor strip. Equivalent to self.tab_bar_height(38.0).
Sourcepub fn vertical(self) -> Self
pub fn vertical(self) -> Self
Configure the bar to render vertically — pills stacked
top-to-bottom on the leading edge, content fills the trailing
area (sidebar / IDE-perspective convention). Equivalent to
self.orientation(TabBarOrientation::Vertical).
Sourcepub fn horizontal(self) -> Self
pub fn horizontal(self) -> Self
Configure the bar to render horizontally — pills laid out left-to-right above the content (browser tab convention). This is the default.
Sourcepub fn orientation(
self,
orientation: impl Into<Prop<TabBarOrientation>>,
) -> Self
pub fn orientation( self, orientation: impl Into<Prop<TabBarOrientation>>, ) -> Self
Set the bar orientation, statically or reactively. Passing a
Signal<TabBarOrientation> replaces the internal orientation
signal with the external one — lets a parent widget toggle
orientation reactively (e.g. a “View → Vertical Tabs” toolbar
button) without recreating the TabWidget.
Sourcepub fn static_tab(self, info: TabInfo, content: impl Widget + 'static) -> Self
pub fn static_tab(self, info: TabInfo, content: impl Widget + 'static) -> Self
Add a static tab — fixed for the widget’s lifetime, with a
pre-built content widget. The content is registered in the
arena on the TabWidget’s first build and memoized —
subsequent rebuilds (caused by adjacent dynamic-model
mutations) reuse the same pane WidgetId, preserving any
internal state the content owns.
Sourcepub fn tab(
self,
label: impl Into<LocalizedString>,
content: impl Widget + 'static,
) -> Self
pub fn tab( self, label: impl Into<LocalizedString>, content: impl Widget + 'static, ) -> Self
Ergonomic shorthand for a title-only static tab:
tab(label, content) is static_tab(TabInfo::new().title(label), content). label accepts tr!(...) (translated) or lit!(...).
This is the method the teksu! tab: slot lowers to
(tab: lit!("Overview"), Card { … }).
Sourcepub fn tab_id(self, label: impl Into<LocalizedString>, id: WidgetId) -> Self
pub fn tab_id(self, label: impl Into<LocalizedString>, id: WidgetId) -> Self
WidgetId twin of tab — tab_id(label, id) is
static_tab_id(TabInfo::new().title(label), id). This is what the
teksu! tab: slot lowers to when its content is an id binding
(#{…} / name = Element).
Sourcepub fn static_tab_factory(
self,
info: TabInfo,
factory: impl Fn(&TabHandle) -> Box<dyn Widget> + 'static,
) -> Self
pub fn static_tab_factory( self, info: TabInfo, factory: impl Fn(&TabHandle) -> Box<dyn Widget> + 'static, ) -> Self
Add a static tab whose content is constructed by a factory
closure. The factory is called once — on the slot’s first
build — and the resulting pane is memoized just like
static_tab.
Sourcepub fn static_tab_id(self, info: TabInfo, content_id: WidgetId) -> Self
pub fn static_tab_id(self, info: TabInfo, content_id: WidgetId) -> Self
Element-valued slot variant for the teksu! DSL — accepts a
pre-registered widget id rather than a Box<dyn Widget>.
Equivalent to static_tab with an
already-built child; the id is wrapped in a tab pane on
first build and the pane id is memoized thereafter.
Sourcepub fn static_tab_with_id(
self,
id: TabId,
info: TabInfo,
content: impl Widget + 'static,
) -> Self
pub fn static_tab_with_id( self, id: TabId, info: TabInfo, content: impl Widget + 'static, ) -> Self
Add a static tab with a caller-provided TabId — useful
when external code (an app-event handler, a session-restore
path, a deep link) needs to flip selection to this tab by id.
The pane is memoized like static_tab.
Sourcepub fn static_tab_factory_with_id(
self,
id: TabId,
info: TabInfo,
factory: impl Fn(&TabHandle) -> Box<dyn Widget> + 'static,
) -> Self
pub fn static_tab_factory_with_id( self, id: TabId, info: TabInfo, factory: impl Fn(&TabHandle) -> Box<dyn Widget> + 'static, ) -> Self
Factory variant of static_tab_with_id.
Sourcepub fn dynamic_tab<S: Any + 'static>(
self,
kind: &'static str,
factory: impl Fn(&TabHandle, &S) -> Box<dyn Widget> + 'static,
) -> Self
pub fn dynamic_tab<S: Any + 'static>( self, kind: &'static str, factory: impl Fn(&TabHandle, &S) -> Box<dyn Widget> + 'static, ) -> Self
Register a dynamic-tab content factory keyed by kind. The
<S> type parameter pins the payload type — the framework
downcasts handle.payload to S before calling the
factory and panics with a clear message on kind/payload
mismatch, so Any never leaks into app code.
Sourcepub fn dynamic_model(self, model: ListModel<TabHandle>) -> Self
pub fn dynamic_model(self, model: ListModel<TabHandle>) -> Self
Connect the dynamic-tab data source. Mutations rebuild the dynamic-tab subtree; static tabs are unaffected.
Sourcepub fn tab_sizing(self, mode: TabSizing) -> Self
pub fn tab_sizing(self, mode: TabSizing) -> Self
Set the per-tab sizing strategy as a static value. Internally
stores it as a Signal<TabSizing> so the widget can be
retrofitted to reactive control via Self::sizing
without breaking existing call sites.
Sourcepub fn sizing(self, sizing: impl Into<Prop<TabSizing>>) -> Self
pub fn sizing(self, sizing: impl Into<Prop<TabSizing>>) -> Self
Bind the per-tab sizing strategy, statically or reactively —
flipping a bound signal swaps between Shared / Independent / Fill
live, with no rebuild on the parent’s part. The signal is bound at
BindingLevel::Rebuild inside build;
memoized panes survive the rebuild so per-tab state is
preserved.
Sourcepub fn tab_display(self, mode: impl Into<Prop<TabDisplayMode>>) -> Self
pub fn tab_display(self, mode: impl Into<Prop<TabDisplayMode>>) -> Self
Choose what every tab shows — icon, label, or both
(TabDisplayMode), statically or reactively. A bound signal can be
flipped to swap icon / text / icon+text live (the bar rebuilds,
memoized panes survive), with no rebuild on the parent’s part. Bound
at BindingLevel::Rebuild.
Sourcepub fn tab_background(self, color: impl Into<ColorProp>) -> Self
pub fn tab_background(self, color: impl Into<ColorProp>) -> Self
All-states shorthand for the per-tab background — every tab
(selected, idle, hovered) paints this unless a per-state override
is set. Accepts any Color, SurfaceRole, or Signal<Color> (via
ColorProp). Default is
transparent. To tint the bar’s backdrop instead, use
bar_background.
Sourcepub fn selected_tab_background(self, color: impl Into<ColorProp>) -> Self
pub fn selected_tab_background(self, color: impl Into<ColorProp>) -> Self
Background for the selected tab. Falls back to
tab_background, then transparent.
Sourcepub fn hover_tab_background(self, color: impl Into<ColorProp>) -> Self
pub fn hover_tab_background(self, color: impl Into<ColorProp>) -> Self
Background for the hovered (non-selected) tab. Falls back to
tab_background, then transparent.
Sourcepub fn idle_tab_background(self, color: impl Into<ColorProp>) -> Self
pub fn idle_tab_background(self, color: impl Into<ColorProp>) -> Self
Background for idle tabs (not selected, not hovered). Falls back
to tab_background, then transparent.
Sourcepub fn bar_background(self, color: impl Into<ColorProp>) -> Self
pub fn bar_background(self, color: impl Into<ColorProp>) -> Self
Set the bar-strip backdrop fill (behind headers, slots, arrows), independent of the per-tab backgrounds. Default transparent.
Sourcepub fn tab_dividers(self) -> Self
pub fn tab_dividers(self) -> Self
Draw a 1 dp divider between consecutive tabs. Off by default.
Sourcepub fn tab_divider_color(self, color: impl Into<ColorProp>) -> Self
pub fn tab_divider_color(self, color: impl Into<ColorProp>) -> Self
Like tab_dividers with an explicit colour
(Color, BorderRole, or
Signal<Color>). Implies tab_dividers().
Sourcepub fn active_indicator(self, position: TabIndicatorPosition) -> Self
pub fn active_indicator(self, position: TabIndicatorPosition) -> Self
Choose which edge the active-tab highlight indicator hugs. Default
TabIndicatorPosition::OuterEdge;
InnerEdge
puts it below the label (horizontal) / trailing edge (vertical).
Sourcepub fn selected_text_role(self, role: TextRole) -> Self
pub fn selected_text_role(self, role: TextRole) -> Self
Set the text role used for the label (and matching icon tint)
on the selected tab. Default: [teksilo_tokens::TextRole::Primary]
— the Int UI editor-strip convention. Override to e.g.
[teksilo_tokens::TextRole::Accent] when the strip sits over a
tinted surface.
Sourcepub fn idle_text_role(self, role: TextRole) -> Self
pub fn idle_text_role(self, role: TextRole) -> Self
Set the text role used for the label (and matching icon tint)
on idle tabs (not selected, not disabled). Default:
[teksilo_tokens::TextRole::Secondary]. Disabled tabs always read
as [teksilo_tokens::TextRole::Disabled] regardless of this
setting.
Sourcepub fn min_tab_width(self, dp: f32) -> Self
pub fn min_tab_width(self, dp: f32) -> Self
Minimum scrollable-tab width in logical pixels. Default
DEFAULT_MIN_TAB_WIDTH.
Sourcepub fn max_tab_width(self, dp: f32) -> Self
pub fn max_tab_width(self, dp: f32) -> Self
Maximum scrollable-tab width in logical pixels. Default
DEFAULT_MAX_TAB_WIDTH.
Sourcepub fn pinned_tab_width(self, dp: f32) -> Self
pub fn pinned_tab_width(self, dp: f32) -> Self
Fixed width for pinned (icon-only) tabs in logical pixels. Default
DEFAULT_PINNED_TAB_WIDTH.
Sourcepub fn show_scroll_arrows(self, on: bool) -> Self
pub fn show_scroll_arrows(self, on: bool) -> Self
Show or hide the leading/trailing scroll-arrow buttons when tabs overflow. Default (unset) uses the style’s preference.
When the trailing “show all tabs” overflow dropdown appears. Default
(unset) is TabOverflowButton::Auto — shown only when the tab headers
overflow the bar’s viewport. See TabOverflowButton for
Always / Never.
Sourcepub fn show_overflow_dropdown(self, on: bool) -> Self
pub fn show_overflow_dropdown(self, on: bool) -> Self
Convenience over overflow_button: true maps
to TabOverflowButton::Always, false to TabOverflowButton::Never.
Sourcepub fn reorderable(self, on: bool) -> Self
pub fn reorderable(self, on: bool) -> Self
Allow drag-to-reorder of tabs within the bar. Default false.
Setting on_reorder implies reorderable(true).
Sourcepub fn on_close(
self,
f: impl Fn(TabId, &mut EventContext<'_>) + 'static,
) -> Self
pub fn on_close( self, f: impl Fn(TabId, &mut EventContext<'_>) + 'static, ) -> Self
Install a close-tab handler. Receives the TabId of the
closed tab (not its index — indices are presentation-only)
and the firing [EventContext]. The latter lets the handler
open a confirmation dialog
(ctx.present_modal(MessageBox::confirm(...))), dispatch an
intent, or otherwise route the close request before mutating
the underlying model. To veto, do nothing in the handler; to
confirm-then-close, only call the model mutator on accept.
If unset, the default behavior is to remove the tab from
dynamic_model without a prompt
(static tabs cannot be closed by default).
Sourcepub fn on_reorder(
self,
f: impl Fn(TabId, usize, &mut EventContext<'_>) + 'static,
) -> Self
pub fn on_reorder( self, f: impl Fn(TabId, usize, &mut EventContext<'_>) + 'static, ) -> Self
Install a reorder handler. Receives (moved_tab_id, destination_index, ctx) in the unified static-then-dynamic
ordering. The firing [EventContext] lets the handler
confirm or dispatch the reorder via a dialog / intent
before mutating the model. If unset, the default behavior
is to reorder within the dynamic region of
dynamic_model. Implies
reorderable(true).
Sourcepub fn on_pin_toggle(
self,
f: impl Fn(TabId, bool, &mut EventContext<'_>) + 'static,
) -> Self
pub fn on_pin_toggle( self, f: impl Fn(TabId, bool, &mut EventContext<'_>) + 'static, ) -> Self
Install a pin-toggle handler — receives (tab_id, new_pinned_flag, ctx) when the user drags a tab across the
pinned ↔ unpinned boundary. The firing [EventContext]
lets the handler confirm or dispatch the transition via a
dialog / intent. Apps decide whether to actually mutate the
tab’s info.pinned.
Sourcepub fn accept_external_tabs(self, on: bool) -> Self
pub fn accept_external_tabs(self, on: bool) -> Self
Opt into cross-TabWidget tab transfer (app-internal
drag-and-drop between two tabbed containers). When enabled,
this widget’s dynamic tabs can be dragged out to any other
accepting TabWidget, and it accepts tabs dragged in from one,
painting an insertion-line indicator between its tabs.
The dragged TabHandle moves intact — its Rc<dyn Any>
payload (the heavy per-tab state) is preserved, not rebuilt —
so the receiving widget must register a content factory for the
tab’s kind via dynamic_tab.
Static tabs are excluded: they have no factory on a
receiving widget, so they can never be transferred out (they
still reorder in place if reorderable).
By default, accepting a tab inserts it into this widget’s
dynamic_model and transferring one out
removes it from this widget’s model. Override either side with
on_tab_received /
on_transfer_out. Default: off.
Sourcepub fn on_tab_received(
self,
f: impl Fn(TabHandle, usize, &mut EventContext<'_>) + 'static,
) -> Self
pub fn on_tab_received( self, f: impl Fn(TabHandle, usize, &mut EventContext<'_>) + 'static, ) -> Self
Override the target-side behaviour when a foreign tab is
dropped onto this widget. Receives (handle, insertion_index, ctx) where insertion_index is within the dynamic tab
region. The app inserts the handle into its own model. Implies
accept_external_tabs(true).
If unset, the default inserts the handle into
dynamic_model at the drop position.
Sourcepub fn on_transfer_out(
self,
f: impl Fn(TabId, &mut EventContext<'_>) + 'static,
) -> Self
pub fn on_transfer_out( self, f: impl Fn(TabId, &mut EventContext<'_>) + 'static, ) -> Self
Override the source-side behaviour after one of this widget’s
tabs has been accepted by another TabWidget. Receives the
transferred TabId; the app removes it from its own model.
Implies accept_external_tabs(true).
If unset, the default removes the tab from
dynamic_model.
Sourcepub fn on_external_drop(
self,
f: impl Fn(&DragPayload, usize, &mut EventContext<'_>) -> bool + 'static,
) -> Self
pub fn on_external_drop( self, f: impl Fn(&DragPayload, usize, &mut EventContext<'_>) -> bool + 'static, ) -> Self
Accept non-tab drops onto the tab bar — an in-app foreign
drag (e.g. a file dragged from a TreeView, carrying app data)
or an OS file/text/URL drop. The bar shows an insertion-line
indicator while such a payload hovers; on drop, f runs with
the raw [DragPayload], the insertion index within the dynamic
region, and the firing context. Inspect the payload
(get_typed::<T>() / files() / text() / uris()) and, e.g.,
push a new TabHandle into your dynamic_model;
return true if accepted.
This is the “open a dropped file as a tab” hook (VS Code style).
Independent of accept_external_tabs.
OS drops also require TeksiloAppBuilder::install_external_dnd().
Sourcepub fn bar_leading_slot(self, w: impl Widget + 'static) -> Self
pub fn bar_leading_slot(self, w: impl Widget + 'static) -> Self
Place a widget on the leading edge of the tab strip (before the first tab). Memoized: registered once on first build, reused on rebuilds.
Sourcepub fn bar_trailing_slot(self, w: impl Widget + 'static) -> Self
pub fn bar_trailing_slot(self, w: impl Widget + 'static) -> Self
Place a widget on the trailing edge of the tab strip (after the last
tab and overflow button). Memoized like
bar_leading_slot.
Sourcepub fn bar_leading_slot_id(self, id: WidgetId) -> Self
pub fn bar_leading_slot_id(self, id: WidgetId) -> Self
Element-valued variant of
bar_leading_slot accepting a
pre-registered WidgetId (for the teksu! DSL).
Sourcepub fn bar_trailing_slot_id(self, id: WidgetId) -> Self
pub fn bar_trailing_slot_id(self, id: WidgetId) -> Self
Element-valued variant of
bar_trailing_slot.
Trait Implementations§
Source§impl Widget for TabWidget
impl Widget for TabWidget
Source§fn preserves_children_on_rebuild(&self) -> bool
fn preserves_children_on_rebuild(&self) -> bool
TabWidget memoizes the WidgetIds of its static-tab panes,
dynamic-tab panes (keyed by TabId), and bar slots across
rebuilds — internal mutable state (focus, scroll, animation,
rich-text editor history, …) survives sibling mutations
(dynamic-model push / remove / reorder, locale or theme
changes that retitle live tabs). Without this opt-in, the
framework’s default destroy_subtree step on rebuild would
reap those memoized panes and the user would see static-tab
content vanish the first time they opened or closed a
dynamic tab.
Source§fn build(&mut self, ctx: &mut BuildContext<'_>) -> Vec<WidgetId>
fn build(&mut self, ctx: &mut BuildContext<'_>) -> Vec<WidgetId>
&mut self — store child IDs, signal handles, any state needed later.
Returns the list of root child IDs (empty for leaf widgets).Source§fn layout_response(
&self,
proposal: SizeProposal,
ctx: &LayoutContext<'_>,
) -> LayoutResponse
fn layout_response( &self, proposal: SizeProposal, ctx: &LayoutContext<'_>, ) -> LayoutResponse
LayoutResponse]). Read moreSource§fn place_children(
&self,
bounds: Rect,
_proposal: SizeProposal,
children: &mut [WidgetPlacement],
_ctx: &LayoutContext<'_>,
)
fn place_children( &self, bounds: Rect, _proposal: SizeProposal, children: &mut [WidgetPlacement], _ctx: &LayoutContext<'_>, )
Source§fn accessibility(&self, builder: &mut AccessNodeBuilder)
fn accessibility(&self, builder: &mut AccessNodeBuilder)
§fn type_name(&self) -> &'static str
fn type_name(&self) -> &'static str
"teksilo_widgets::button::Button"). The default implementation
resolves at the impl site via std::any::type_name::<Self>(),
so calls through &dyn Widget correctly dispatch to the
monomorphized fn for the concrete type — getting the
concrete name through the vtable without per-impl boilerplate. Read more§fn cacheable_layout(&self) -> bool
fn cacheable_layout(&self) -> bool
layout_response may be
memoized by the per-pass layout cache. Defaults to true. Read more§fn paint(&self, _bounds: Rect, _canvas: &mut Canvas, _ctx: &PaintContext<'_>)
fn paint(&self, _bounds: Rect, _canvas: &mut Canvas, _ctx: &PaintContext<'_>)
§fn wants_after_paint(&self) -> bool
fn wants_after_paint(&self) -> bool
after_paint
hook to fire each frame. Returning false (the default) saves
a virtual call per widget per frame for the vast majority of
widgets that don’t aggregate descendant geometry. Read more§fn after_paint(&self, _view: &WidgetTreeView<'_>, _ctx: &PaintContext<'_>)
fn after_paint(&self, _view: &WidgetTreeView<'_>, _ctx: &PaintContext<'_>)
TitleBar aggregates its drag region and control-button
rects into a single HitRegions payload for the Windows
backend’s WM_NCHITTEST. Read more§fn wants_post_paint(&self) -> bool
fn wants_post_paint(&self) -> bool
post_paint
hook to fire each frame. Returning false (the default) saves a
virtual call per widget per frame for the vast majority of widgets
that don’t draw a foreground over their children. Read more§fn post_paint(
&self,
_bounds: Rect,
_canvas: &mut Canvas,
_ctx: &PaintContext<'_>,
)
fn post_paint( &self, _bounds: Rect, _canvas: &mut Canvas, _ctx: &PaintContext<'_>, )
§fn wants_descendant_redirects(&self) -> bool
fn wants_descendant_redirects(&self) -> bool
a11y_redirect_descendant
hook for every descendant during AT tree emission, not
just its direct arena children. Read more§fn a11y_redirect_descendant(
&self,
_self_id: WidgetId,
_descendant: WidgetId,
) -> Option<NodeId>
fn a11y_redirect_descendant( &self, _self_id: WidgetId, _descendant: WidgetId, ) -> Option<NodeId>
§fn accessible_title_hint(&self) -> Option<String>
fn accessible_title_hint(&self) -> Option<String>
§fn initial_focus_hint(&self) -> Option<WidgetId>
fn initial_focus_hint(&self) -> Option<WidgetId>
§fn accessibility_children(&self) -> Option<Vec<WidgetId>>
fn accessibility_children(&self) -> Option<Vec<WidgetId>>
§fn as_any(&self) -> Option<&(dyn Any + 'static)>
fn as_any(&self) -> Option<&(dyn Any + 'static)>
None; concrete
widgets override with Some(self) when they want to expose
their concrete type to test-level introspection or reflection.
The trait already bounds on std::any::Any so concrete types
satisfy the 'static requirement.§fn as_any_mut(&mut self) -> Option<&mut (dyn Any + 'static)>
fn as_any_mut(&mut self) -> Option<&mut (dyn Any + 'static)>
as_any. Default
returns None; widgets that want to expose mutable state to
tests (e.g. so a test can mutate a Scene inside a
SceneView post-layout) override with Some(self). Should
follow the same opt-in pattern as as_any: only widgets
that opt into & introspection should opt into &mut.§fn clips_children(&self) -> bool
fn clips_children(&self) -> bool
§fn focus_reveal_rect(&self, _bounds: Rect) -> Option<Rect>
fn focus_reveal_rect(&self, _bounds: Rect) -> Option<Rect>
None (the default) reveals the widget’s whole
bounds — correct for most controls. Read more§fn hit_shape(&self, _local_point: Point, _bounds: Rect) -> bool
fn hit_shape(&self, _local_point: Point, _bounds: Rect) -> bool
false for a point that is inside
the bounding box makes the widget transparent to the click there,
so it falls through to whatever sibling is painted underneath
(the same machinery as a fully pass-through node, but shape-aware). Read more§fn tooltip_has_content(&self) -> bool
fn tooltip_has_content(&self) -> bool
§fn declare_shortcuts(&self) -> Vec<Shortcut>
fn declare_shortcuts(&self) -> Vec<Shortcut>
build()) and at certain lazy
boundaries (e.g. Switcher walks declarations on its
not-yet-mounted Pending slots), so settings UIs and the
ShortcutRegistry see the keystrokes the moment the owning
container mounts — even if build() hasn’t run. Read more§fn take_handler_set(&mut self) -> Option<HandlerSet>
fn take_handler_set(&mut self) -> Option<HandlerSet>
WidgetWithHandlers wrapper.
Called during arena insertion to transfer handlers to the WidgetNode.
Default: returns None (no attached handlers).Auto Trait Implementations§
impl !RefUnwindSafe for TabWidget
impl !Send for TabWidget
impl !Sync for TabWidget
impl !UnwindSafe for TabWidget
impl Freeze for TabWidget
impl Unpin for TabWidget
impl UnsafeUnpin for TabWidget
Blanket Implementations§
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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
§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> ErasedDestructor for Twhere
T: 'static,
§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§impl<W> IntoTeksiChild for Wwhere
W: Widget + 'static,
impl<W> IntoTeksiChild for Wwhere
W: Widget + 'static,
fn into_pending(self) -> PendingChild
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
§impl<W> WidgetBuilder for Wwhere
W: Widget + 'static,
impl<W> WidgetBuilder for Wwhere
W: Widget + 'static,
fn on_tap( self, f: impl FnMut(&TapEvent, &mut EventContext<'_>) + 'static, ) -> WidgetWithHandlers<Self>
fn on_double_tap( self, f: impl FnMut(&TapEvent, &mut EventContext<'_>) + 'static, ) -> WidgetWithHandlers<Self>
fn on_triple_tap( self, f: impl FnMut(&TapEvent, &mut EventContext<'_>) + 'static, ) -> WidgetWithHandlers<Self>
fn on_long_press( self, f: impl FnMut(&TapEvent, &mut EventContext<'_>) + 'static, ) -> WidgetWithHandlers<Self>
on_tap. Default is [ButtonMask::PRIMARY].on_double_tap. Default [ButtonMask::PRIMARY].on_triple_tap. Default [ButtonMask::PRIMARY].on_long_press. Default [ButtonMask::PRIMARY].§fn dim_when_inactive(self, factor: f32) -> DimWhenInactive
fn dim_when_inactive(self, factor: f32) -> DimWhenInactive
factor opacity whenever the host window
is inactive (not focused / occluded), restoring full opacity when it
becomes active again. The opt-in, per-widget layer of the window-active
appearance model — for custom content an app wants to fade back when its
window isn’t the active one. Stock widgets handle their own
inactive appearance (caret hiding, selection desaturation) and need no
wrapping. Layout- and a11y-transparent; the opacity snaps (no tween),
which is correct under prefers-reduced-motion. See
DimWhenInactive.§fn dim_when_inactive_default(self) -> DimWhenInactive
fn dim_when_inactive_default(self) -> DimWhenInactive
dim_when_inactive with the default factor
(DEFAULT_DIM_FACTOR, 70 %).fn on_drag( self, f: impl FnMut(DragPhase, &mut EventContext<'_>) + 'static, ) -> WidgetWithHandlers<Self>
fn on_swipe( self, f: impl FnMut(SwipeDirection, f32, &mut EventContext<'_>) + 'static, ) -> WidgetWithHandlers<Self>
fn on_pinch( self, f: impl FnMut(PinchPhase, &mut EventContext<'_>) + 'static, ) -> WidgetWithHandlers<Self>
fn on_focus( self, f: impl FnMut(bool, &mut EventContext<'_>) + 'static, ) -> WidgetWithHandlers<Self>
fn on_key( self, f: impl FnMut(&WidgetEvent, &mut EventContext<'_>) -> EventResponse + 'static, ) -> WidgetWithHandlers<Self>
§fn on_key_preview(
self,
f: impl FnMut(&WidgetEvent, &mut EventContext<'_>) -> EventResponse + 'static,
) -> WidgetWithHandlers<Self>
fn on_key_preview( self, f: impl FnMut(&WidgetEvent, &mut EventContext<'_>) -> EventResponse + 'static, ) -> WidgetWithHandlers<Self>
HandlerSet::on_key_preview].fn on_pointer_event( self, f: impl FnMut(&WidgetEvent, &mut EventContext<'_>) -> EventResponse + 'static, ) -> WidgetWithHandlers<Self>
fn on_hover( self, f: impl FnMut(bool, &mut EventContext<'_>) + 'static, ) -> WidgetWithHandlers<Self>
fn on_scroll( self, f: impl FnMut(&WidgetEvent, &mut EventContext<'_>) -> EventResponse + 'static, ) -> WidgetWithHandlers<Self>
fn on_access_action( self, f: impl FnMut(Action, &mut EventContext<'_>) -> EventResponse + 'static, ) -> WidgetWithHandlers<Self>
fn focusable(self, focusable: bool) -> WidgetWithHandlers<Self>
fn tab_index(self, index: i32) -> WidgetWithHandlers<Self>
fn cursor(self, cursor: CursorIcon) -> WidgetWithHandlers<Self>
fn clips_children_on(self, clips: bool) -> WidgetWithHandlers<Self>
§fn ime_input(self, ctx: ImeContext) -> WidgetWithHandlers<Self>
fn ime_input(self, ctx: ImeContext) -> WidgetWithHandlers<Self>
ctx’s purpose) while it is focused. See [crate::ime].§fn event_pass_through(self, pass_through: bool) -> WidgetWithHandlers<Self>
fn event_pass_through(self, pass_through: bool) -> WidgetWithHandlers<Self>
HandlerSet::event_pass_through].§fn gesture_dead_zone(self, dead_zone: bool) -> WidgetWithHandlers<Self>
fn gesture_dead_zone(self, dead_zone: bool) -> WidgetWithHandlers<Self>
HandlerSet::gesture_dead_zone].§fn keyboard_capture(self, capture: bool) -> WidgetWithHandlers<Self>
fn keyboard_capture(self, capture: bool) -> WidgetWithHandlers<Self>
KeyDowns bypass shortcut resolution.
See [HandlerSet::keyboard_capture].§fn hit_transparent(self, transparent: bool) -> WidgetWithHandlers<Self>
fn hit_transparent(self, transparent: bool) -> WidgetWithHandlers<Self>
HandlerSet::hit_transparent].HandlerSet::context_menu] for the full contract.§fn focus_within(self, signal: Signal<bool>) -> WidgetWithHandlers<Self>
fn focus_within(self, signal: Signal<bool>) -> WidgetWithHandlers<Self>
Signal<bool> the framework writes when a strict
descendant has focus. See [HandlerSet::focus_within].§fn hover_within(self, signal: Signal<bool>) -> WidgetWithHandlers<Self>
fn hover_within(self, signal: Signal<bool>) -> WidgetWithHandlers<Self>
Signal<bool> the framework writes when a strict
descendant is hovered. See [HandlerSet::hover_within].§fn visible_when(self, state: impl Into<Prop<bool>>) -> WidgetWithHandlers<Self>
fn visible_when(self, state: impl Into<Prop<bool>>) -> WidgetWithHandlers<Self>
bool / Signal<bool> / Prop<bool>) as
a builder property, so teksu! can write visible_when: sig. Equivalent
to ctx.visible_when(id, ..). See [HandlerSet::visible_when].fn on_drag_hover( self, f: impl FnMut(&DragPayload, Point, &mut EventContext<'_>) -> DropFeedback + 'static, ) -> WidgetWithHandlers<Self>
fn on_drag_leave( self, f: impl FnMut(&mut EventContext<'_>) + 'static, ) -> WidgetWithHandlers<Self>
fn on_drag_tick( self, f: impl FnMut(Point, &mut EventContext<'_>) + 'static, ) -> WidgetWithHandlers<Self>
fn on_drop( self, f: impl FnMut(DragPayload, Point, &mut EventContext<'_>) -> bool + 'static, ) -> WidgetWithHandlers<Self>
§fn on_drag_ended(
self,
f: impl FnMut(DropOutcome, &mut EventContext<'_>) + 'static,
) -> WidgetWithHandlers<Self>
fn on_drag_ended( self, f: impl FnMut(DropOutcome, &mut EventContext<'_>) + 'static, ) -> WidgetWithHandlers<Self>
HandlerSet::on_drag_ended].