Implement macOS-specific key shortcuts for text_editor
This commit is contained in:
parent
524b4acc6d
commit
416ec838f2
2 changed files with 36 additions and 31 deletions
|
|
@ -1148,6 +1148,9 @@ impl<Message> Binding<Message> {
|
||||||
return None;
|
return None;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(target_os = "macos")]
|
||||||
|
let key = convert_macos_shortcut(&key, modifiers);
|
||||||
|
|
||||||
match key.as_ref() {
|
match key.as_ref() {
|
||||||
keyboard::Key::Named(key::Named::Enter) => Some(Self::Enter),
|
keyboard::Key::Named(key::Named::Enter) => Some(Self::Enter),
|
||||||
keyboard::Key::Named(key::Named::Backspace) => {
|
keyboard::Key::Named(key::Named::Backspace) => {
|
||||||
|
|
@ -1454,3 +1457,33 @@ pub fn default(theme: &Theme, status: Status) -> Style {
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(target_os = "macos")]
|
||||||
|
pub(crate) fn convert_macos_shortcut(
|
||||||
|
key: &keyboard::Key,
|
||||||
|
modifiers: keyboard::Modifiers,
|
||||||
|
) -> &keyboard::Key {
|
||||||
|
if modifiers != keyboard::Modifiers::CTRL {
|
||||||
|
return key;
|
||||||
|
}
|
||||||
|
|
||||||
|
match key.as_ref() {
|
||||||
|
keyboard::Key::Character("b") => {
|
||||||
|
&keyboard::Key::Named(key::Named::ArrowLeft)
|
||||||
|
}
|
||||||
|
keyboard::Key::Character("f") => {
|
||||||
|
&keyboard::Key::Named(key::Named::ArrowRight)
|
||||||
|
}
|
||||||
|
keyboard::Key::Character("a") => {
|
||||||
|
&keyboard::Key::Named(key::Named::Home)
|
||||||
|
}
|
||||||
|
keyboard::Key::Character("e") => &keyboard::Key::Named(key::Named::End),
|
||||||
|
keyboard::Key::Character("h") => {
|
||||||
|
&keyboard::Key::Named(key::Named::Backspace)
|
||||||
|
}
|
||||||
|
keyboard::Key::Character("d") => {
|
||||||
|
&keyboard::Key::Named(key::Named::Delete)
|
||||||
|
}
|
||||||
|
_ => key,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -1010,7 +1010,9 @@ where
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(target_os = "macos")]
|
#[cfg(target_os = "macos")]
|
||||||
let key = convert_macos_shortcut(key, modifiers);
|
let key = crate::text_editor::convert_macos_shortcut(
|
||||||
|
key, modifiers,
|
||||||
|
);
|
||||||
|
|
||||||
match key.as_ref() {
|
match key.as_ref() {
|
||||||
keyboard::Key::Named(key::Named::Enter) => {
|
keyboard::Key::Named(key::Named::Enter) => {
|
||||||
|
|
@ -1786,33 +1788,3 @@ fn alignment_offset(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(target_os = "macos")]
|
|
||||||
fn convert_macos_shortcut(
|
|
||||||
key: &keyboard::Key,
|
|
||||||
modifiers: keyboard::Modifiers,
|
|
||||||
) -> &keyboard::Key {
|
|
||||||
if modifiers != keyboard::Modifiers::CTRL {
|
|
||||||
return key;
|
|
||||||
}
|
|
||||||
|
|
||||||
match key.as_ref() {
|
|
||||||
keyboard::Key::Character("b") => {
|
|
||||||
&keyboard::Key::Named(key::Named::ArrowLeft)
|
|
||||||
}
|
|
||||||
keyboard::Key::Character("f") => {
|
|
||||||
&keyboard::Key::Named(key::Named::ArrowRight)
|
|
||||||
}
|
|
||||||
keyboard::Key::Character("a") => {
|
|
||||||
&keyboard::Key::Named(key::Named::Home)
|
|
||||||
}
|
|
||||||
keyboard::Key::Character("e") => &keyboard::Key::Named(key::Named::End),
|
|
||||||
keyboard::Key::Character("h") => {
|
|
||||||
&keyboard::Key::Named(key::Named::Backspace)
|
|
||||||
}
|
|
||||||
keyboard::Key::Character("d") => {
|
|
||||||
&keyboard::Key::Named(key::Named::Delete)
|
|
||||||
}
|
|
||||||
_ => key,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue