fix(examples): update input in examples to only use press events (#129)

This commit is contained in:
lesleyrs 2023-04-13 22:21:35 +02:00 committed by GitHub
parent 00e8c0d1b0
commit 4842885aa6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 42 additions and 32 deletions

View File

@ -1,6 +1,6 @@
use crate::{app::App, ui}; use crate::{app::App, ui};
use crossterm::{ use crossterm::{
event::{self, DisableMouseCapture, EnableMouseCapture, Event, KeyCode}, event::{self, DisableMouseCapture, EnableMouseCapture, Event, KeyCode, KeyEventKind},
execute, execute,
terminal::{disable_raw_mode, enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen}, terminal::{disable_raw_mode, enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen},
}; };
@ -56,6 +56,7 @@ fn run_app<B: Backend>(
.unwrap_or_else(|| Duration::from_secs(0)); .unwrap_or_else(|| Duration::from_secs(0));
if crossterm::event::poll(timeout)? { if crossterm::event::poll(timeout)? {
if let Event::Key(key) = event::read()? { if let Event::Key(key) = event::read()? {
if key.kind == KeyEventKind::Press {
match key.code { match key.code {
KeyCode::Char(c) => app.on_key(c), KeyCode::Char(c) => app.on_key(c),
KeyCode::Left => app.on_left(), KeyCode::Left => app.on_left(),
@ -66,6 +67,7 @@ fn run_app<B: Backend>(
} }
} }
} }
}
if last_tick.elapsed() >= tick_rate { if last_tick.elapsed() >= tick_rate {
app.on_tick(); app.on_tick();
last_tick = Instant::now(); last_tick = Instant::now();

View File

@ -1,5 +1,5 @@
use crossterm::{ use crossterm::{
event::{self, DisableMouseCapture, EnableMouseCapture, Event, KeyCode}, event::{self, DisableMouseCapture, EnableMouseCapture, Event, KeyCode, KeyEventKind},
execute, execute,
terminal::{disable_raw_mode, enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen}, terminal::{disable_raw_mode, enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen},
}; };
@ -186,6 +186,7 @@ fn run_app<B: Backend>(
.unwrap_or_else(|| Duration::from_secs(0)); .unwrap_or_else(|| Duration::from_secs(0));
if crossterm::event::poll(timeout)? { if crossterm::event::poll(timeout)? {
if let Event::Key(key) = event::read()? { if let Event::Key(key) = event::read()? {
if key.kind == KeyEventKind::Press {
match key.code { match key.code {
KeyCode::Char('q') => return Ok(()), KeyCode::Char('q') => return Ok(()),
KeyCode::Left => app.items.unselect(), KeyCode::Left => app.items.unselect(),
@ -195,6 +196,7 @@ fn run_app<B: Backend>(
} }
} }
} }
}
if last_tick.elapsed() >= tick_rate { if last_tick.elapsed() >= tick_rate {
app.on_tick(); app.on_tick();
last_tick = Instant::now(); last_tick = Instant::now();

View File

@ -9,7 +9,7 @@ use ratatui::{
use std::{error::Error, io}; use std::{error::Error, io};
use crossterm::{ use crossterm::{
event::{self, DisableMouseCapture, EnableMouseCapture, Event, KeyCode}, event::{self, DisableMouseCapture, EnableMouseCapture, Event, KeyCode, KeyEventKind},
execute, execute,
terminal::{disable_raw_mode, enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen}, terminal::{disable_raw_mode, enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen},
}; };
@ -57,6 +57,7 @@ fn run_app<B: Backend>(terminal: &mut Terminal<B>, mut app: App) -> io::Result<(
terminal.draw(|f| ui(f, &app))?; terminal.draw(|f| ui(f, &app))?;
if let Event::Key(key) = event::read()? { if let Event::Key(key) = event::read()? {
if key.kind == KeyEventKind::Press {
match key.code { match key.code {
KeyCode::Char('q') => return Ok(()), KeyCode::Char('q') => return Ok(()),
KeyCode::Char('p') => app.show_popup = !app.show_popup, KeyCode::Char('p') => app.show_popup = !app.show_popup,
@ -65,6 +66,7 @@ fn run_app<B: Backend>(terminal: &mut Terminal<B>, mut app: App) -> io::Result<(
} }
} }
} }
}
fn ui<B: Backend>(f: &mut Frame<B>, app: &App) { fn ui<B: Backend>(f: &mut Frame<B>, app: &App) {
let size = f.size(); let size = f.size();

View File

@ -1,5 +1,5 @@
use crossterm::{ use crossterm::{
event::{self, DisableMouseCapture, EnableMouseCapture, Event, KeyCode}, event::{self, DisableMouseCapture, EnableMouseCapture, Event, KeyCode, KeyEventKind},
execute, execute,
terminal::{disable_raw_mode, enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen}, terminal::{disable_raw_mode, enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen},
}; };
@ -106,6 +106,7 @@ fn run_app<B: Backend>(terminal: &mut Terminal<B>, mut app: App) -> io::Result<(
terminal.draw(|f| ui(f, &mut app))?; terminal.draw(|f| ui(f, &mut app))?;
if let Event::Key(key) = event::read()? { if let Event::Key(key) = event::read()? {
if key.kind == KeyEventKind::Press {
match key.code { match key.code {
KeyCode::Char('q') => return Ok(()), KeyCode::Char('q') => return Ok(()),
KeyCode::Down => app.next(), KeyCode::Down => app.next(),
@ -115,6 +116,7 @@ fn run_app<B: Backend>(terminal: &mut Terminal<B>, mut app: App) -> io::Result<(
} }
} }
} }
}
fn ui<B: Backend>(f: &mut Frame<B>, app: &mut App) { fn ui<B: Backend>(f: &mut Frame<B>, app: &mut App) {
let rects = Layout::default() let rects = Layout::default()

View File

@ -1,5 +1,5 @@
use crossterm::{ use crossterm::{
event::{self, DisableMouseCapture, EnableMouseCapture, Event, KeyCode}, event::{self, DisableMouseCapture, EnableMouseCapture, Event, KeyCode, KeyEventKind},
execute, execute,
terminal::{disable_raw_mode, enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen}, terminal::{disable_raw_mode, enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen},
}; };
@ -72,6 +72,7 @@ fn run_app<B: Backend>(terminal: &mut Terminal<B>, mut app: App) -> io::Result<(
terminal.draw(|f| ui(f, &app))?; terminal.draw(|f| ui(f, &app))?;
if let Event::Key(key) = event::read()? { if let Event::Key(key) = event::read()? {
if key.kind == KeyEventKind::Press {
match key.code { match key.code {
KeyCode::Char('q') => return Ok(()), KeyCode::Char('q') => return Ok(()),
KeyCode::Right => app.next(), KeyCode::Right => app.next(),
@ -81,6 +82,7 @@ fn run_app<B: Backend>(terminal: &mut Terminal<B>, mut app: App) -> io::Result<(
} }
} }
} }
}
fn ui<B: Backend>(f: &mut Frame<B>, app: &App) { fn ui<B: Backend>(f: &mut Frame<B>, app: &App) {
let size = f.size(); let size = f.size();