pub struct TextComponent<T> {
pub has_focus: bool,
/* private fields */
}Expand description
A widget that accepts text input.
This is intended to be used as a component of other widgets.
Text input is more complicated than you think, probably. For a good
overview, see druid_shell::text.
This type manages an inner EditSession that is shared with the platform.
Unlike other aspects of Druid, the platform interacts with this session, not
through discrete events.
This is managed through a simple ‘locking’ mechanism; the platform asks for a lock on a particular text session that it wishes to interact with, calls methods on the locked session, and then later releases the lock.
Importantly, other events may be received while the lock is held.
It is the responsibility of the user of this widget to ensure that the
session is not locked before it is accessed. This can be done by checking
TextComponent::can_read and TextComponent::can_write;
after checking these methods the inner session can be accessed via
TextComponent::borrow and TextComponent::borrow_mut.
Sementically, this functions like a RefCell; attempting to borrow while
a lock is held will result in a panic.
Fields§
§has_focus: boolA manual flag set by the parent to control drawing behaviour.
The parent should update this when handling LifeCycle::FocusChanged.
Implementations§
Source§impl TextComponent<()>
impl TextComponent<()>
Sourcepub const SCROLL_TO: Selector<bool>
pub const SCROLL_TO: Selector<bool>
A notification sent by the component when the cursor has moved.
If the payload is true, this follows an edit, and the view will need layout before scrolling.
Sourcepub const RETURN: Selector
pub const RETURN: Selector
A notification sent by the component when the user hits return.
This is only sent when send_notification_on_return is true.
Sourcepub const CANCEL: Selector
pub const CANCEL: Selector
A notification sent when the user cancels editing.
This is only sent when send_notification_on_cancel is true.
Source§impl<T> TextComponent<T>
impl<T> TextComponent<T>
Sourcepub fn can_read(&self) -> bool
pub fn can_read(&self) -> bool
Returns true if the inner EditSession can be read.
Sourcepub fn can_write(&self) -> bool
pub fn can_write(&self) -> bool
Returns true if the inner EditSession can be mutated.
Sourcepub fn is_composing(&self) -> bool
pub fn is_composing(&self) -> bool
Returns true if the IME is actively composing (or the text is locked.)
When text is composing, you should avoid doing things like modifying the selection or copy/pasting text.
Sourcepub fn borrow_mut(&self) -> RefMut<'_, EditSession<T>>
pub fn borrow_mut(&self) -> RefMut<'_, EditSession<T>>
Attempt to mutably borrow the inner EditSession.
§Panics
This method panics if there is an outstanding lock on the session.
Sourcepub fn borrow(&self) -> Ref<'_, EditSession<T>>
pub fn borrow(&self) -> Ref<'_, EditSession<T>>
Attempt to borrow the inner EditSession.
§Panics
This method panics if there is an outstanding write lock on the session.
Source§impl<T: EditableText + TextStorage> TextComponent<T>
impl<T: EditableText + TextStorage> TextComponent<T>
Sourcepub fn input_handler(&self) -> impl ImeHandlerRef
pub fn input_handler(&self) -> impl ImeHandlerRef
Returns an ImeHandlerRef that can accept platform text input.
The widget managing this component should call LifeCycleCtx::register_text_input
during LifeCycle::WidgetAdded, and pass it this object.
Trait Implementations§
Source§impl<T: Clone> Clone for TextComponent<T>
impl<T: Clone> Clone for TextComponent<T>
Source§fn clone(&self) -> TextComponent<T>
fn clone(&self) -> TextComponent<T>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl<T: Debug> Debug for TextComponent<T>
impl<T: Debug> Debug for TextComponent<T>
Source§impl<T> Default for TextComponent<T>
impl<T> Default for TextComponent<T>
Source§impl<T: TextStorage + EditableText> Widget<T> for TextComponent<T>
impl<T: TextStorage + EditableText> Widget<T> for TextComponent<T>
Source§fn event(
&mut self,
ctx: &mut EventCtx<'_, '_>,
event: &Event,
data: &mut T,
env: &Env,
)
fn event( &mut self, ctx: &mut EventCtx<'_, '_>, event: &Event, data: &mut T, env: &Env, )
Source§fn lifecycle(
&mut self,
ctx: &mut LifeCycleCtx<'_, '_>,
event: &LifeCycle,
data: &T,
env: &Env,
)
fn lifecycle( &mut self, ctx: &mut LifeCycleCtx<'_, '_>, event: &LifeCycle, data: &T, env: &Env, )
Source§fn layout(
&mut self,
ctx: &mut LayoutCtx<'_, '_>,
bc: &BoxConstraints,
_data: &T,
env: &Env,
) -> Size
fn layout( &mut self, ctx: &mut LayoutCtx<'_, '_>, bc: &BoxConstraints, _data: &T, env: &Env, ) -> Size
Source§fn paint(&mut self, ctx: &mut PaintCtx<'_, '_, '_>, _data: &T, env: &Env)
fn paint(&mut self, ctx: &mut PaintCtx<'_, '_, '_>, _data: &T, env: &Env)
Source§fn compute_max_intrinsic(
&mut self,
axis: Axis,
ctx: &mut LayoutCtx<'_, '_>,
bc: &BoxConstraints,
data: &T,
env: &Env,
) -> f64
fn compute_max_intrinsic( &mut self, axis: Axis, ctx: &mut LayoutCtx<'_, '_>, bc: &BoxConstraints, data: &T, env: &Env, ) -> f64
Auto Trait Implementations§
impl<T> Freeze for TextComponent<T>
impl<T> !RefUnwindSafe for TextComponent<T>
impl<T> !Send for TextComponent<T>
impl<T> !Sync for TextComponent<T>
impl<T> Unpin for TextComponent<T>
impl<T> !UnwindSafe for TextComponent<T>
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T, U> RoundInto<U> for Twhere
U: RoundFrom<T>,
impl<T, U> RoundInto<U> for Twhere
U: RoundFrom<T>,
Source§fn round_into(self) -> U
fn round_into(self) -> U
Source§impl<T, W> TestWidgetExt<T> for W
impl<T, W> TestWidgetExt<T> for W
Source§impl<T, W> WidgetExt<T> for W
impl<T, W> WidgetExt<T> for W
Source§fn align_left(self) -> Align<T>
fn align_left(self) -> Align<T>
Align widget, configured to align left.Source§fn align_right(self) -> Align<T>
fn align_right(self) -> Align<T>
Align widget, configured to align right.Source§fn align_vertical(self, align: UnitPoint) -> Align<T>
fn align_vertical(self, align: UnitPoint) -> Align<T>
Align widget, configured to align vertically.Source§fn align_horizontal(self, align: UnitPoint) -> Align<T>
fn align_horizontal(self, align: UnitPoint) -> Align<T>
Align widget, configured to align horizontally.Source§fn fix_width(self, width: impl Into<KeyOrValue<f64>>) -> SizedBox<T>
fn fix_width(self, width: impl Into<KeyOrValue<f64>>) -> SizedBox<T>
SizedBox with an explicit width.Source§fn fix_height(self, height: impl Into<KeyOrValue<f64>>) -> SizedBox<T>
fn fix_height(self, height: impl Into<KeyOrValue<f64>>) -> SizedBox<T>
SizedBox with an explicit height.Source§fn fix_size(
self,
width: impl Into<KeyOrValue<f64>>,
height: impl Into<KeyOrValue<f64>>,
) -> SizedBox<T>
fn fix_size( self, width: impl Into<KeyOrValue<f64>>, height: impl Into<KeyOrValue<f64>>, ) -> SizedBox<T>
SizedBox with an explicit width and heightSource§fn expand_width(self) -> SizedBox<T>
fn expand_width(self) -> SizedBox<T>
Source§fn expand_height(self) -> SizedBox<T>
fn expand_height(self) -> SizedBox<T>
Source§fn background(self, brush: impl Into<BackgroundBrush<T>>) -> Container<T>
fn background(self, brush: impl Into<BackgroundBrush<T>>) -> Container<T>
Source§fn foreground(self, brush: impl Into<BackgroundBrush<T>>) -> Container<T>
fn foreground(self, brush: impl Into<BackgroundBrush<T>>) -> Container<T>
Source§fn border(
self,
color: impl Into<KeyOrValue<Color>>,
width: impl Into<KeyOrValue<f64>>,
) -> Container<T>
fn border( self, color: impl Into<KeyOrValue<Color>>, width: impl Into<KeyOrValue<f64>>, ) -> Container<T>
Source§fn controller<C: Controller<T, Self>>(
self,
controller: C,
) -> ControllerHost<Self, C>
fn controller<C: Controller<T, Self>>( self, controller: C, ) -> ControllerHost<Self, C>
Controller.Source§fn on_added(
self,
f: impl Fn(&mut Self, &mut LifeCycleCtx<'_, '_>, &T, &Env) + 'static,
) -> ControllerHost<Self, Added<T, Self>>
fn on_added( self, f: impl Fn(&mut Self, &mut LifeCycleCtx<'_, '_>, &T, &Env) + 'static, ) -> ControllerHost<Self, Added<T, Self>>
Source§fn on_click(
self,
f: impl Fn(&mut EventCtx<'_, '_>, &mut T, &Env) + 'static,
) -> ControllerHost<Self, Click<T>>
fn on_click( self, f: impl Fn(&mut EventCtx<'_, '_>, &mut T, &Env) + 'static, ) -> ControllerHost<Self, Click<T>>
Source§fn debug_paint_layout(self) -> EnvScope<T, Self>
fn debug_paint_layout(self) -> EnvScope<T, Self>
layout Rects of this widget and its children.Source§fn debug_widget_id(self) -> EnvScope<T, Self>
fn debug_widget_id(self) -> EnvScope<T, Self>
WidgetIds for this widget and its children, when hot. Read moreSource§fn debug_invalidation(self) -> DebugInvalidation<T, Self>
fn debug_invalidation(self) -> DebugInvalidation<T, Self>
Source§fn debug_widget(self) -> EnvScope<T, Self>
fn debug_widget(self) -> EnvScope<T, Self>
DEBUG_WIDGET env variable for this widget (and its descendants). Read moreSource§fn with_id(self, id: WidgetId) -> IdentityWrapper<Self>
fn with_id(self, id: WidgetId) -> IdentityWrapper<Self>
Source§fn disabled_if(
self,
disabled_if: impl Fn(&T, &Env) -> bool + 'static,
) -> DisabledIf<T, Self>
fn disabled_if( self, disabled_if: impl Fn(&T, &Env) -> bool + 'static, ) -> DisabledIf<T, Self>
DisabledIf widget. Read more