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
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:
-
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 ifMovement
is a downstream movement. -
If
Movement
isGrapheme
, then stop. Otherwise, apply theMovement
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
Inserts a newline character into the document.
InsertTab
Fields
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.