Enum druid::text::TextAction

source ·
#[non_exhaustive]
pub enum TextAction {
Show 21 variants Move(Movement), MoveSelecting(Movement), SelectAll, SelectLine, SelectParagraph, SelectWord, Delete(Movement), DecomposingBackspace, UppercaseSelection, LowercaseSelection, TitlecaseSelection, InsertNewLine { ignore_hotkey: bool, newline_type: char, }, InsertTab { ignore_hotkey: bool, }, InsertBacktab, InsertSingleQuoteIgnoringSmartQuotes, InsertDoubleQuoteIgnoringSmartQuotes, Scroll(VerticalMovement), ScrollToSelection, SetSelectionWritingDirection(WritingDirection), SetParagraphWritingDirection(WritingDirection), Cancel,
}
Expand description

A special text editing command sent from the platform to the application.

Variants (Non-exhaustive)§

This enum is marked as non-exhaustive
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
§

Move(Movement)

Moves the selection.

Before moving, if the active and the anchor of the selection are not at the same position (it’s a non-caret selection), then:

  1. First set both active and anchor to the same position: the selection’s upstream index if Movement is an upstream movement, or the downstream index if Movement is a downstream movement.

  2. If Movement is Grapheme, then stop. Otherwise, apply the Movement as per the usual rules.

§

MoveSelecting(Movement)

Moves just the selection’s active edge.

Equivalent to holding shift while performing movements or clicks on most operating systems.

§

SelectAll

Select the entire document.

§

SelectLine

Expands the selection to the entire soft-wrapped line.

If multiple lines are already selected, expands the selection to encompass all soft-wrapped lines that intersected with the prior selection. If the selection is a caret is on a soft line break, uses the affinity of the caret to determine which of the two lines to select. SelectLine should be idempotent: it should never expand onto adjacent lines.

§

SelectParagraph

Expands the selection to the entire hard-wrapped line.

If multiple lines are already selected, expands the selection to encompass all hard-wrapped lines that intersected with the prior selection. SelectParagraph should be idempotent: it should never expand onto adjacent lines.

§

SelectWord

Expands the selection to the entire word.

If multiple words are already selected, expands the selection to encompass all words that intersected with the prior selection. If the selection is a caret is on a word boundary, selects the word downstream of the caret. SelectWord should be idempotent: it should never expand onto adjacent words.

For more information on what these so-called “words” are, see Unicode Text Segmentation.

§

Delete(Movement)

Deletes some text.

If some text is already selected, Movement is ignored, and the selection is deleted. If the selection’s anchor is the same as the active, then first apply MoveSelecting(Movement) and then delete the resulting selection.

§

DecomposingBackspace

Delete backwards, potentially breaking graphemes.

A special kind of backspace that, instead of deleting the entire grapheme upstream of the caret, may in some cases and character sets delete a subset of that grapheme’s code points.

§

UppercaseSelection

Maps the characters in the selection to uppercase.

For more information on case mapping, see the Unicode Case Mapping FAQ

§

LowercaseSelection

Maps the characters in the selection to lowercase.

For more information on case mapping, see the Unicode Case Mapping FAQ

§

TitlecaseSelection

Maps the characters in the selection to titlecase.

When calculating whether a character is at the beginning of a word, you may have to peek outside the selection to other characters in the document.

For more information on case mapping, see the Unicode Case Mapping FAQ

§

InsertNewLine

Fields

§ignore_hotkey: bool

If true, then always insert a newline, even if normally you would run a keyboard shortcut attached to the return key, like sending a message or activating autocomplete.

On macOS, this is triggered by pressing option-return.

§newline_type: char

Either U+000A, U+2029, or U+2028. For instance, on macOS, control-enter inserts U+2028.

Inserts a newline character into the document.

§

InsertTab

Fields

§ignore_hotkey: bool

If true, then always insert a tab, even if normally you would run a keyboard shortcut attached to the return key, like indenting a line or activating autocomplete.

On macOS, this is triggered by pressing option-tab.

Inserts a tab character into the document.

§

InsertBacktab

Indicates the reverse of inserting tab; corresponds to shift-tab on most operating systems.

§

InsertSingleQuoteIgnoringSmartQuotes

§

InsertDoubleQuoteIgnoringSmartQuotes

§

Scroll(VerticalMovement)

Scrolls the text field without modifying the selection.

§

ScrollToSelection

Centers the selection vertically in the text field.

The average of the anchor’s y and the active’s y should be exactly halfway down the field. If the selection is taller than the text field’s visible height, then instead scrolls the minimum distance such that the text field is completely vertically filled by the selection.

§

SetSelectionWritingDirection(WritingDirection)

Sets the writing direction of the selected text or caret.

§

SetParagraphWritingDirection(WritingDirection)

Sets the writing direction of all paragraphs that partially or fully intersect with the selection or caret.

§

Cancel

Cancels the current window or operation.

Triggered on most operating systems with escape.

Trait Implementations§

source§

impl Clone for Action

source§

fn clone(&self) -> Action

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Action

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
source§

impl Hash for Action

source§

fn hash<__H>(&self, state: &mut __H)where __H: Hasher,

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl PartialEq<Action> for Action

source§

fn eq(&self, other: &Action) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Copy for Action

source§

impl Eq for Action

source§

impl StructuralEq for Action

source§

impl StructuralPartialEq for Action

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> AnyEq for Twhere T: Any + PartialEq<T>,

source§

fn equals(&self, other: &(dyn Any + 'static)) -> bool

source§

fn as_any(&self) -> &(dyn Any + 'static)

source§

impl<T> Borrow<T> for Twhere T: ?Sized,

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

const: unstable · source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

const: unstable · source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for Twhere U: From<T>,

const: unstable · source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

§

impl<T> RoundFrom<T> for T

§

fn round_from(x: T) -> T

Performs the conversion.
§

impl<T, U> RoundInto<U> for Twhere U: RoundFrom<T>,

§

fn round_into(self) -> U

Performs the conversion.
source§

impl<T> Same<T> for T

§

type Output = T

Should always be Self
source§

impl<T> ToOwned for Twhere T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
const: unstable · source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more