Create jump and macos_command methods in keyboard::Modifiers

This commit is contained in:
Héctor Ramón Jiménez 2024-05-31 16:23:09 +02:00
parent 8cfa8149f5
commit 3312dc8080
No known key found for this signature in database
GPG key ID: 7CC46565708259A7
3 changed files with 32 additions and 70 deletions

View file

@ -768,9 +768,7 @@ impl Update {
if let keyboard::Key::Named(named_key) = key.as_ref() {
if let Some(motion) = motion(named_key) {
let motion = if platform::is_macos_command_pressed(
modifiers,
) {
let motion = if modifiers.macos_command() {
match motion {
Motion::Left => Motion::Home,
Motion::Right => Motion::End,
@ -780,9 +778,7 @@ impl Update {
motion
};
let motion = if platform::is_jump_modifier_pressed(
modifiers,
) {
let motion = if modifiers.jump() {
motion.widen()
} else {
motion
@ -819,31 +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()
}
}
/// Whether the command key is pressed on a macOS device.
///
/// This is relevant for actions like ⌘ + ArrowLeft to move to the beginning of the
/// line where the equivalent behavior for `modifiers.command()` is instead a jump on
/// other platforms.
pub fn is_macos_command_pressed(modifiers: keyboard::Modifiers) -> bool {
if cfg!(target_os = "macos") {
modifiers.logo()
} else {
false
}
}
}
/// The possible status of a [`TextEditor`].
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum Status {