summaryrefslogtreecommitdiffstats
path: root/widget/src/text_editor.rs
diff options
context:
space:
mode:
Diffstat (limited to 'widget/src/text_editor.rs')
-rw-r--r--widget/src/text_editor.rs26
1 files changed, 11 insertions, 15 deletions
diff --git a/widget/src/text_editor.rs b/widget/src/text_editor.rs
index 7c0b98ea..41b058af 100644
--- a/widget/src/text_editor.rs
+++ b/widget/src/text_editor.rs
@@ -768,9 +768,17 @@ impl Update {
if let keyboard::Key::Named(named_key) = key.as_ref() {
if let Some(motion) = motion(named_key) {
- let motion = if platform::is_jump_modifier_pressed(
- modifiers,
- ) {
+ let motion = if modifiers.macos_command() {
+ match motion {
+ Motion::Left => Motion::Home,
+ Motion::Right => Motion::End,
+ _ => motion,
+ }
+ } else {
+ motion
+ };
+
+ let motion = if modifiers.jump() {
motion.widen()
} else {
motion
@@ -807,18 +815,6 @@ fn motion(key: key::Named) -> Option<Motion> {
}
}
-mod platform {
- use crate::core::keyboard;
-
- pub fn is_jump_modifier_pressed(modifiers: keyboard::Modifiers) -> bool {
- if cfg!(target_os = "macos") {
- modifiers.alt()
- } else {
- modifiers.control()
- }
- }
-}
-
/// The possible status of a [`TextEditor`].
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum Status {