mirror of
https://github.com/veeso/termscp.git
synced 2025-12-07 09:36:00 -08:00
Handle shift enter (file list)
This commit is contained in:
@@ -393,10 +393,10 @@ impl Component for FileList {
|
|||||||
self.states.toggle_file(self.states.list_index());
|
self.states.toggle_file(self.states.list_index());
|
||||||
Msg::None
|
Msg::None
|
||||||
}
|
}
|
||||||
KeyCode::Enter => {
|
KeyCode::Enter => match key.modifiers.intersects(KeyModifiers::SHIFT) {
|
||||||
// Report event
|
false => Msg::OnSubmit(self.get_state()),
|
||||||
Msg::OnSubmit(self.get_state())
|
true => Msg::OnKey(key),
|
||||||
}
|
},
|
||||||
_ => {
|
_ => {
|
||||||
// Return key event to activity
|
// Return key event to activity
|
||||||
Msg::OnKey(key)
|
Msg::OnKey(key)
|
||||||
@@ -449,7 +449,7 @@ mod tests {
|
|||||||
use super::*;
|
use super::*;
|
||||||
|
|
||||||
use pretty_assertions::assert_eq;
|
use pretty_assertions::assert_eq;
|
||||||
use tuirealm::event::KeyEvent;
|
use tuirealm::event::{KeyEvent, KeyModifiers};
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_ui_components_file_list_states() {
|
fn test_ui_components_file_list_states() {
|
||||||
@@ -616,6 +616,14 @@ mod tests {
|
|||||||
component.on(Event::Key(KeyEvent::from(KeyCode::Enter))),
|
component.on(Event::Key(KeyEvent::from(KeyCode::Enter))),
|
||||||
Msg::OnSubmit(Payload::One(Value::Usize(0)))
|
Msg::OnSubmit(Payload::One(Value::Usize(0)))
|
||||||
);
|
);
|
||||||
|
// Enter shift
|
||||||
|
assert_eq!(
|
||||||
|
component.on(Event::Key(KeyEvent::new(
|
||||||
|
KeyCode::Enter,
|
||||||
|
KeyModifiers::SHIFT
|
||||||
|
))),
|
||||||
|
Msg::OnKey(KeyEvent::new(KeyCode::Enter, KeyModifiers::SHIFT))
|
||||||
|
);
|
||||||
// On key
|
// On key
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
component.on(Event::Key(KeyEvent::from(KeyCode::Backspace))),
|
component.on(Event::Key(KeyEvent::from(KeyCode::Backspace))),
|
||||||
@@ -626,6 +634,15 @@ mod tests {
|
|||||||
component.on(Event::Key(KeyEvent::from(KeyCode::Char('a')))),
|
component.on(Event::Key(KeyEvent::from(KeyCode::Char('a')))),
|
||||||
Msg::OnKey(KeyEvent::from(KeyCode::Char('a')))
|
Msg::OnKey(KeyEvent::from(KeyCode::Char('a')))
|
||||||
);
|
);
|
||||||
|
// Ctrl + a
|
||||||
|
assert_eq!(
|
||||||
|
component.on(Event::Key(KeyEvent::new(
|
||||||
|
KeyCode::Char('a'),
|
||||||
|
KeyModifiers::CONTROL
|
||||||
|
))),
|
||||||
|
Msg::None
|
||||||
|
);
|
||||||
|
assert_eq!(component.states.selected.len(), component.states.list_len());
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
|||||||
@@ -34,6 +34,10 @@ pub const MSG_KEY_ENTER: Msg = Msg::OnKey(KeyEvent {
|
|||||||
code: KeyCode::Enter,
|
code: KeyCode::Enter,
|
||||||
modifiers: KeyModifiers::NONE,
|
modifiers: KeyModifiers::NONE,
|
||||||
});
|
});
|
||||||
|
pub const MSG_KEY_SHIFT_ENTER: Msg = Msg::OnKey(KeyEvent {
|
||||||
|
code: KeyCode::Enter,
|
||||||
|
modifiers: KeyModifiers::SHIFT,
|
||||||
|
});
|
||||||
pub const MSG_KEY_ESC: Msg = Msg::OnKey(KeyEvent {
|
pub const MSG_KEY_ESC: Msg = Msg::OnKey(KeyEvent {
|
||||||
code: KeyCode::Esc,
|
code: KeyCode::Esc,
|
||||||
modifiers: KeyModifiers::NONE,
|
modifiers: KeyModifiers::NONE,
|
||||||
|
|||||||
Reference in New Issue
Block a user