pub struct TextArea { /* private fields */ }Expand description
A multiline text editor that fills its available area.
Implementations§
Source§impl TextArea
impl TextArea
Sourcepub fn debug_raster_count(&self) -> u64
pub fn debug_raster_count(&self) -> u64
Test/introspection hook: number of real backbuffer re-rasters (each
paint into the buffer bumps it). Scrolling within a band must not
increment this; re-anchoring or editing must.
Sourcepub fn debug_strip_raster_count(&self) -> u64
pub fn debug_strip_raster_count(&self) -> u64
Test/introspection hook: number of partial (dirty-line-strip) re-rasters. A localized edit within an active band bumps this; a re-anchor or a structural change (resize, wrap re-flow) does not.
Source§impl TextArea
impl TextArea
Sourcepub fn on_change(self, cb: impl FnMut(&str) + 'static) -> Self
pub fn on_change(self, cb: impl FnMut(&str) + 'static) -> Self
Install a callback fired after every text change.
Fires for: typing, Enter, Tab-insert, backspace/delete, paste, cut, and
key-intercept edits that advance the content epoch. It does NOT fire for
purely programmatic mutations pushed straight into the shared
TextEditState from outside the widget (those bypass the mutation
funnel; the epoch mechanism still re-wraps them on the next layout).
Source§impl TextArea
impl TextArea
Enable or disable the default right-click Cut/Copy/Paste/Select-All context menu. On by default.
Source§impl TextArea
impl TextArea
Sourcepub fn scroll_offset(&self) -> f64
pub fn scroll_offset(&self) -> f64
Current vertical scroll offset (0 = top). Exposed for tests/inspectors.
Sourcepub fn with_scroll_watch(self, watch: Rc<Cell<f64>>) -> Self
pub fn with_scroll_watch(self, watch: Rc<Cell<f64>>) -> Self
Publish this widget’s live vertical scroll offset (in px from the top,
the same value scroll_offset reports) into a
shared cell whenever it changes. Exists so a sibling widget outside the
editor’s subtree can mirror the viewport — the Code Editor demo’s
line-number gutter uses it to keep the numbers aligned with the scrolled
text, which it otherwise cannot see. The cell is refreshed at every offset
mutation (wheel, thumb drag, scroll-to-caret, relayout clamp), so it is
current before the next frame paints.
Source§impl TextArea
impl TextArea
pub fn new(font: Arc<Font>) -> Self
pub fn with_text(self, text: impl Into<String>) -> Self
Sourcepub fn with_hint_text(self, hint: impl Into<String>) -> Self
pub fn with_hint_text(self, hint: impl Into<String>) -> Self
Placeholder text shown, dimmed, while the buffer is empty.
Sourcepub fn with_content_h_align(self, a: TextHAlign) -> Self
pub fn with_content_h_align(self, a: TextHAlign) -> Self
Static horizontal alignment of the wrapped content.
Sourcepub fn with_content_v_align(self, a: TextVAlign) -> Self
pub fn with_content_v_align(self, a: TextVAlign) -> Self
Static vertical alignment of the wrapped content block.
Sourcepub fn with_h_align_cell(self, cell: Rc<Cell<TextHAlign>>) -> Self
pub fn with_h_align_cell(self, cell: Rc<Cell<TextHAlign>>) -> Self
Bind horizontal alignment to a live cell (wins over the static value).
Sourcepub fn with_v_align_cell(self, cell: Rc<Cell<TextVAlign>>) -> Self
pub fn with_v_align_cell(self, cell: Rc<Cell<TextVAlign>>) -> Self
Bind vertical alignment to a live cell (wins over the static value).
Sourcepub fn with_edit_state(self, state: Rc<RefCell<TextEditState>>) -> Self
pub fn with_edit_state(self, state: Rc<RefCell<TextEditState>>) -> Self
Adopt an externally-owned edit state so a caller can read the text /
selection and mutate it (clear, replace, move cursor) from outside the
widget tree. External text mutations must call
TextEditState::note_text_change so the wrap cache invalidates.
Sourcepub fn with_focus_id(self, id: FocusId) -> Self
pub fn with_focus_id(self, id: FocusId) -> Self
Stable id for the programmatic focus channel
(crate::focus::request_focus).
Sourcepub fn with_key_intercept(
self,
cb: impl FnMut(&Key, &Modifiers) -> bool + 'static,
) -> Self
pub fn with_key_intercept( self, cb: impl FnMut(&Key, &Modifiers) -> bool + 'static, ) -> Self
Install a pre-default key-chord interceptor. It runs before the widget’s
built-in key handling on every KeyDown; returning true consumes the
event and suppresses the default action for that key.
Sourcepub fn with_highlighter(
self,
cb: impl Fn(&str) -> Vec<(usize, usize, Color)> + 'static,
) -> Self
pub fn with_highlighter( self, cb: impl Fn(&str) -> Vec<(usize, usize, Color)> + 'static, ) -> Self
Install a per-visual-line syntax highlighter (see LineHighlighter).
Sourcepub fn edit_state(&self) -> Rc<RefCell<TextEditState>>
pub fn edit_state(&self) -> Rc<RefCell<TextEditState>>
Clone of the shared edit-state handle, for selection/text readback and external mutation.
Sourcepub fn selection(&self) -> Option<(usize, usize)>
pub fn selection(&self) -> Option<(usize, usize)>
Current selection as a sorted [start, end) byte range, or None when
nothing is selected.
Sourcepub fn selected_text(&self) -> String
pub fn selected_text(&self) -> String
The currently-selected substring (empty when there is no selection).
Sourcepub fn set_cursor_to_start(&mut self)
pub fn set_cursor_to_start(&mut self)
Collapse the selection and place the cursor at the very start.
Sourcepub fn set_cursor_to_end(&mut self)
pub fn set_cursor_to_end(&mut self)
Collapse the selection and place the cursor at the very end.
pub fn with_font_size(self, size: f64) -> Self
pub fn with_padding(self, p: f64) -> Self
pub fn with_margin(self, m: Insets) -> Self
pub fn with_h_anchor(self, h: HAnchor) -> Self
pub fn with_v_anchor(self, v: VAnchor) -> Self
pub fn with_min_size(self, s: Size) -> Self
pub fn with_max_size(self, s: Size) -> Self
Sourcepub fn visual_line_count(&self) -> usize
pub fn visual_line_count(&self) -> usize
Count of visual lines at the last layout pass (cache).
Trait Implementations§
Source§impl Widget for TextArea
impl Widget for TextArea
Source§fn has_active_modal(&self) -> bool
fn has_active_modal(&self) -> bool
While the right-click menu is open it must capture every event (clicks outside dismiss it, Escape closes it).
Source§fn paint_global_overlay(&mut self, ctx: &mut dyn DrawCtx)
fn paint_global_overlay(&mut self, ctx: &mut dyn DrawCtx)
The context menu paints at app level so it can overflow the editor bounds and clamp to the viewport.
Source§fn type_name(&self) -> &'static str
fn type_name(&self) -> &'static str
Source§fn set_bounds(&mut self, b: Rect)
fn set_bounds(&mut self, b: Rect)
Source§fn children_mut(&mut self) -> &mut Vec<Box<dyn Widget>>
fn children_mut(&mut self) -> &mut Vec<Box<dyn Widget>>
Source§fn is_focusable(&self) -> bool
fn is_focusable(&self) -> bool
Source§fn focus_id(&self) -> Option<FocusId>
fn focus_id(&self) -> Option<FocusId>
crate::focus::request_focus). Read moreSource§fn accepts_text_input(&self) -> bool
fn accepts_text_input(&self) -> bool
true when this widget accepts free-form character input (typing
arbitrary letters, numbers, punctuation). Used by the on-screen
software keyboard (crate::widgets::on_screen_keyboard) to decide
whether to slide up when this widget gains focus. Read moreSource§fn text_input_value(&self) -> Option<String>
fn text_input_value(&self) -> Option<String>
., !, ?, newline) opens the keyboard with Shift
active. Read moreSource§fn widget_base(&self) -> Option<&WidgetBase>
fn widget_base(&self) -> Option<&WidgetBase>
WidgetBase. Read moreSource§fn widget_base_mut(&mut self) -> Option<&mut WidgetBase>
fn widget_base_mut(&mut self) -> Option<&mut WidgetBase>
widget_base. Read moreSource§fn h_anchor(&self) -> HAnchor
fn h_anchor(&self) -> HAnchor
HAnchor::FIT (take natural content width).Source§fn v_anchor(&self) -> VAnchor
fn v_anchor(&self) -> VAnchor
VAnchor::FIT (take natural content height).Source§fn backbuffer_cache_mut(&mut self) -> Option<&mut BackbufferCache>
fn backbuffer_cache_mut(&mut self) -> Option<&mut BackbufferCache>
Source§fn backbuffer_band(&self) -> Option<BackbufferBand>
fn backbuffer_band(&self) -> Option<BackbufferBand>
Source§fn backbuffer_mode(&self) -> BackbufferMode
fn backbuffer_mode(&self) -> BackbufferMode
backbuffer_cache_mut] returns Some. Default
BackbufferMode::Rgba — correct for any widget.
Opt into BackbufferMode::LcdCoverage only when the widget
paints opaque content covering its full bounds.Source§fn measure_min_height(&self, available_w: f64) -> f64
fn measure_min_height(&self, available_w: f64) -> f64
available_w for width. Read moreSource§fn layout(&mut self, available: Size) -> Size
fn layout(&mut self, available: Size) -> Size
Source§fn paint(&mut self, ctx: &mut dyn DrawCtx)
fn paint(&mut self, ctx: &mut dyn DrawCtx)
ctx. Read moreSource§fn paint_overlay(&mut self, ctx: &mut dyn DrawCtx)
fn paint_overlay(&mut self, ctx: &mut dyn DrawCtx)
Source§fn on_event(&mut self, event: &Event) -> EventResult
fn on_event(&mut self, event: &Event) -> EventResult
EventResult::Consumed to stop bubbling. Read moreSource§fn hit_test(&self, local_pos: Point) -> bool
fn hit_test(&self, local_pos: Point) -> bool
true if local_pos (in this widget’s local coordinates) falls
inside this widget’s interactive area. Default: axis-aligned rect test.Source§fn properties(&self) -> Vec<(&'static str, String)>
fn properties(&self) -> Vec<(&'static str, String)>
Source§fn needs_draw(&self) -> bool
fn needs_draw(&self) -> bool
true if this widget, or any visible descendant, has an ongoing
draw need that should keep the host drawing. Read moreSource§fn next_draw_deadline(&self) -> Option<Instant>
fn next_draw_deadline(&self) -> Option<Instant>
None = no scheduled wake.
The host loop turns a Some(t) into ControlFlow::WaitUntil(t) so
e.g. a cursor blink fires without continuous polling. Read moreSource§fn claims_pointer_exclusively(&self, _local_pos: Point) -> bool
fn claims_pointer_exclusively(&self, _local_pos: Point) -> bool
true, hit_test_subtree stops recursing into this widget’s
children and returns this widget as the hit target. Used for floating
overlays (e.g. a scrollbar painted above its content) that must claim
the pointer before children that happen to share the same pixels.
Default: false.Source§fn blocks_child_interaction(&self) -> bool
fn blocks_child_interaction(&self) -> bool
true, this widget disables all interaction — pointer and
keyboard — within its subtree, reproducing egui’s
UiBuilder::disabled(). Unlike [claims_pointer_exclusively], this is
a position-independent state predicate: pointer hit-testing stops at
this widget (so clicks are swallowed rather than passing through), and
focus collection skips the whole subtree (so Tab cannot reach a child).
Default: false.Source§fn hit_test_global_overlay(&self, _local_pos: Point) -> bool
fn hit_test_global_overlay(&self, _local_pos: Point) -> bool
local_pos hits an app-level overlay owned by this
widget. Unlike normal hit testing, ancestors may be missed because the
overlay is painted outside their bounds.Source§fn on_unconsumed_key(
&mut self,
_key: &Key,
_modifiers: Modifiers,
) -> EventResult
fn on_unconsumed_key( &mut self, _key: &Key, _modifiers: Modifiers, ) -> EventResult
Source§fn id(&self) -> Option<&str>
fn id(&self) -> Option<&str>
Source§fn is_visible(&self) -> bool
fn is_visible(&self) -> bool
false to suppress painting this widget and all its children.
The widget’s own paint() will not be called. Default: true.Source§fn text_input_mode(&self) -> KeyboardInputMode
fn text_input_mode(&self) -> KeyboardInputMode
KeyboardInputMode::Text;
numeric fields override to
Numeric
so the digit pad slides up instead of the letter row. Read moreSource§fn try_scroll_to_lift(&mut self, _amount: f64) -> f64
fn try_scroll_to_lift(&mut self, _amount: f64) -> f64
amount
pixels. Used by the on-screen-keyboard auto-scroll so a
focused text field doesn’t end up hidden behind the keyboard
panel: the App walks UP the focus path and asks each ancestor
to absorb some of the deficit. Read moreSource§fn set_label_color(&mut self, _color: Color)
fn set_label_color(&mut self, _color: Color)
Label), update its foreground
colour. Default is a no-op. Composite widgets call this on their
children to retint labels without rebuilding them — used by Button
when toggling between active (white text on accent) and inactive
(theme text on subtle bg) appearances.Source§fn set_label_text(&mut self, _text: &str)
fn set_label_text(&mut self, _text: &str)
Label), update its
displayed text. Default is a no-op. Composite widgets that
own a Label child use this to push live values (e.g. an FPS
counter) into the child without bypassing the standard
backbuffered glyph cache — calling this on a Label only
invalidates the cache when the text actually changed.Source§fn as_reflect(&self) -> Option<&dyn Reflect>
fn as_reflect(&self) -> Option<&dyn Reflect>
Source§fn as_reflect_mut(&mut self) -> Option<&mut dyn Reflect>
fn as_reflect_mut(&mut self) -> Option<&mut dyn Reflect>
as_reflect. Used by the
inspector to write edits back into the live widget.Source§fn has_backbuffer(&self) -> bool
fn has_backbuffer(&self) -> bool
Source§fn compositing_layer(&mut self) -> Option<CompositingLayer>
fn compositing_layer(&mut self) -> Option<CompositingLayer>
Source§fn backbuffer_spec(&mut self) -> BackbufferSpec
fn backbuffer_spec(&mut self) -> BackbufferSpec
Source§fn backbuffer_state_mut(&mut self) -> Option<&mut BackbufferState>
fn backbuffer_state_mut(&mut self) -> Option<&mut BackbufferState>
BackbufferSpec other than BackbufferKind::None.Source§fn mark_dirty(&mut self)
fn mark_dirty(&mut self)
Source§fn contributes_children_to_inspector(&self) -> bool
fn contributes_children_to_inspector(&self) -> bool
Source§fn show_in_inspector(&self) -> bool
fn show_in_inspector(&self) -> bool
false to hide this widget (and its subtree) from the inspector
node snapshot entirely. Intended for zero-size utility widgets such
as layout-time watchers / tickers / invisible composers — they bloat
the inspector tree without providing user-relevant information and,
at scale, can make the inspector’s per-frame tree rebuild expensive.Source§fn lcd_preference(&self) -> Option<bool>
fn lcd_preference(&self) -> Option<bool>
Source§fn finish_paint(&mut self, _ctx: &mut dyn DrawCtx)
fn finish_paint(&mut self, _ctx: &mut dyn DrawCtx)
paint, child painting, and optional overlay painting. Read moreSource§fn defer_paint_to_overlay(&self) -> bool
fn defer_paint_to_overlay(&self) -> bool
paint_global_overlay
instead — the same clip-escaping global pass used by menus and tooltips. Read moreSource§fn clip_children_rect(&self) -> Option<(f64, f64, f64, f64)>
fn clip_children_rect(&self) -> Option<(f64, f64, f64, f64)>
paint_subtree applies this clip before recursing into
children, then restores the previous clip state afterward. The clip does
not affect paint_overlay, which runs after the clip is removed. Read moreSource§fn inspector_child_transform(&self) -> TransAffine
fn inspector_child_transform(&self) -> TransAffine
paint() does — e.g. a widget
that pushes pan/zoom in paint() and pops it in finish_paint()
makes the framework recurse into its children with pan/zoom active,
so collect_inspector_nodes must apply the same transform when
accumulating descendant screen bounds. Without this hook the
inspector hover overlay lands at the un-transformed canvas position
when the widget sits inside a panning/zooming container. Read moreSource§fn child_transform(&self) -> Option<TransAffine>
fn child_transform(&self) -> Option<TransAffine>
Source§fn padding(&self) -> Insets
fn padding(&self) -> Insets
Insets::ZERO. Read moreSource§fn tooltip_text(&self) -> Option<&str>
fn tooltip_text(&self) -> Option<&str>
None. Read moreSource§fn with_tooltip(self, text: impl Into<String>) -> Selfwhere
Self: Sized,
fn with_tooltip(self, text: impl Into<String>) -> Selfwhere
Self: Sized,
self for chaining. Read moreSource§fn set_tooltip_text(&mut self, text: Option<String>)
fn set_tooltip_text(&mut self, text: Option<String>)
with_tooltip,
callable on a &mut dyn Widget / Box<dyn Widget> (used by builders
that assemble a control tree from boxed widgets, e.g. toolbars). Writes
through widget_base_mut; a no-op for widgets
without a WidgetBase. Pass None to clear.Source§fn enforce_integer_bounds(&self) -> bool
fn enforce_integer_bounds(&self) -> bool
paint_subtree should snap this widget’s incoming
translation to the physical pixel grid. Read moreSource§fn take_raise_request(&mut self) -> bool
fn take_raise_request(&mut self) -> bool
crate::widgets::Stack) call this on each
child at the start of layout(). A widget that returns true is
moved to the END of its parent’s child list — painted last, i.e.
raised to the top of the z-order. take_ semantics: the call is
also expected to clear the request so the child doesn’t keep
getting raised every frame. Read moreAuto Trait Implementations§
impl !Freeze for TextArea
impl !RefUnwindSafe for TextArea
impl !Send for TextArea
impl !Sync for TextArea
impl !UnwindSafe for TextArea
impl Unpin for TextArea
impl UnsafeUnpin for TextArea
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
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§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.Source§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.Source§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.Source§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.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