Move ctrl-C handling from backend to cursive callbacks

This commit is contained in:
Alexandre Bury 2020-01-26 14:51:34 -08:00
parent 54882989e4
commit 5afefb8645
5 changed files with 6 additions and 10 deletions

View File

@ -98,10 +98,6 @@ impl From<CKeyEvent> for Event {
match event {
// Handle Char + modifier.
CKeyEvent {
modifiers: KeyModifiers::CONTROL,
code: KeyCode::Char('c'),
} => Event::Exit,
CKeyEvent {
modifiers: KeyModifiers::CONTROL,
code: KeyCode::Char(c),

View File

@ -509,7 +509,6 @@ fn initialize_keymap() -> HashMap<i32, Event> {
let event = match c {
// This is Ctrl+C
// TODO: Don't exit here, but add this as a default callback
3 => Event::Exit,
9 => Event::Key(Key::Tab),
10 => Event::Key(Key::Enter),
other => Event::CtrlChar((b'a' - 1 + other as u8) as char),

View File

@ -151,8 +151,6 @@ impl Backend {
pancurses::Input::Character('\u{9}') => Event::Key(Key::Tab),
pancurses::Input::Character('\u{1b}') => Event::Key(Key::Esc),
// Ctrl+C
// TODO: Do not sent Exit here, but register it as a default callback
pancurses::Input::Character('\u{3}') => Event::Exit,
pancurses::Input::Character(c) if (c as u32) <= 26 => {
Event::CtrlChar((b'a' - 1 + c as u8) as char)
}

View File

@ -120,7 +120,6 @@ impl Backend {
TEvent::Key(TKey::Char('\n')) => Event::Key(Key::Enter),
TEvent::Key(TKey::Char('\t')) => Event::Key(Key::Tab),
TEvent::Key(TKey::Char(c)) => Event::Char(c),
TEvent::Key(TKey::Ctrl('c')) => Event::Exit,
TEvent::Key(TKey::Ctrl(c)) => Event::CtrlChar(c),
TEvent::Key(TKey::Alt(c)) => Event::AltChar(c),
TEvent::Mouse(TMouseEvent::Press(btn, x, y)) => {

View File

@ -150,7 +150,8 @@ impl Cursive {
let (cb_sink, cb_source) = crossbeam_channel::unbounded();
backend_init().map(|backend| Cursive {
let backend = backend_init()?;
let mut cursive = Cursive {
theme,
root: views::OnEventView::new(views::ScreensView::single_screen(
views::StackView::new(),
@ -164,7 +165,10 @@ impl Cursive {
fps: None,
boring_frame_count: 0,
user_data: Box::new(()),
})
};
cursive.reset_default_callbacks();
Ok(cursive)
}
/// Creates a new Cursive root using a ncurses backend.