Enum druid_shell::text::Action [−][src]
#[non_exhaustive]
pub enum Action {
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.
Tuple Fields of Move
0: Movement
MoveSelecting(Movement)
Moves just the selection’s active edge.
Equivalent to holding shift while performing movements or clicks on most operating systems.
Tuple Fields of MoveSelecting
0: Movement
Select the entire document.
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.
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.
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.
Tuple Fields of Delete
0: Movement
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.
Maps the characters in the selection to uppercase.
For more information on case mapping, see the Unicode Case Mapping FAQ
Maps the characters in the selection to lowercase.
For more information on case mapping, see the Unicode Case Mapping FAQ
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
Inserts a newline character into the document.
Fields of InsertNewLine
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 tab character into the document.
Fields of InsertTab
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.
Indicates the reverse of inserting tab; corresponds to shift-tab on most operating systems.
Scroll(VerticalMovement)
Scrolls the text field without modifying the selection.
Tuple Fields of Scroll
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.
Tuple Fields of SetSelectionWritingDirection
SetParagraphWritingDirection(WritingDirection)
Sets the writing direction of all paragraphs that partially or fully intersect with the selection or caret.
Tuple Fields of SetParagraphWritingDirection
Cancels the current window or operation.
Triggered on most operating systems with escape.
Trait Implementations
Auto Trait Implementations
impl RefUnwindSafe for Action
impl UnwindSafe for Action
Blanket Implementations
Mutably borrows from an owned value. Read more
Instruments this type with the provided Span
, returning an
Instrumented
wrapper. Read more
pub fn round_from(x: T) -> T
pub fn round_from(x: T) -> T
Performs the conversion.
pub fn round_into(self) -> U
pub fn round_into(self) -> U
Performs the conversion.
Attaches the provided Subscriber
to this type, returning a
WithDispatch
wrapper. Read more
Attaches the current default Subscriber
to this type, returning a
WithDispatch
wrapper. Read more