Create jump and macos_command methods in keyboard::Modifiers
This commit is contained in:
parent
8cfa8149f5
commit
3312dc8080
3 changed files with 32 additions and 70 deletions
|
|
@ -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 {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue