Struct druid::text::TextComponent
source · 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: bool
A 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 more