From 60ce814ca281876bf341c3ff587c2fd54e81a6a3 Mon Sep 17 00:00:00 2001 From: pm100 Date: Fri, 5 May 2023 18:37:54 +0200 Subject: [PATCH] fix windows double character --- Cargo.toml | 4 ++++ examples/minimal.rs | 7 +++++++ examples/ratatui_minimal.rs | 8 +++++++- src/input.rs | 9 ++++++--- 4 files changed, 24 insertions(+), 4 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index e543e5c..f0ecf5d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -42,6 +42,7 @@ tui = { version = "0.19", default-features = false, optional = true } arbitrary = { version = "1", features = ["derive"], optional = true } crossterm-026 = { package = "crossterm", version = "0.26", optional = true } ratatui = { version = "0.20.1", default-features = false, optional = true } +log = "0.4.17" [[example]] name = "minimal" @@ -91,6 +92,9 @@ members = [ [profile.bench] lto = "thin" +[dev-dependencies] +simplelog = "0.12.1" + [package.metadata.docs.rs] all-features = true rustdoc-args = ["--cfg", "docsrs"] diff --git a/examples/minimal.rs b/examples/minimal.rs index 5d26a20..2325fb6 100644 --- a/examples/minimal.rs +++ b/examples/minimal.rs @@ -2,6 +2,8 @@ use crossterm::event::{DisableMouseCapture, EnableMouseCapture}; use crossterm::terminal::{ disable_raw_mode, enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen, }; +use simplelog::{Config, LevelFilter, WriteLogger}; +use std::fs::File; use std::io; use tui::backend::CrosstermBackend; use tui::widgets::{Block, Borders}; @@ -9,6 +11,11 @@ use tui::Terminal; use tui_textarea::{Input, Key, TextArea}; fn main() -> io::Result<()> { + let _ = WriteLogger::init( + LevelFilter::Trace, + Config::default(), + File::create("textarea.log").unwrap(), + ); let stdout = io::stdout(); let mut stdout = stdout.lock(); diff --git a/examples/ratatui_minimal.rs b/examples/ratatui_minimal.rs index 0cdd311..9474fe6 100644 --- a/examples/ratatui_minimal.rs +++ b/examples/ratatui_minimal.rs @@ -7,10 +7,16 @@ use crossterm::terminal::{ use ratatui::backend::CrosstermBackend; use ratatui::widgets::{Block, Borders}; use ratatui::Terminal; +use simplelog::{Config, LevelFilter, WriteLogger}; +use std::fs::File; use std::io; use tui_textarea::{Input, Key, TextArea}; - fn main() -> io::Result<()> { + let _ = WriteLogger::init( + LevelFilter::Trace, + Config::default(), + File::create("textarea.log").unwrap(), + ); let stdout = io::stdout(); let mut stdout = stdout.lock(); diff --git a/src/input.rs b/src/input.rs index aa099e3..4128a0e 100644 --- a/src/input.rs +++ b/src/input.rs @@ -1,10 +1,12 @@ #[cfg(any(feature = "crossterm", feature = "ratatui-crossterm"))] use crate::crossterm::event::{ - Event as CrosstermEvent, KeyCode, KeyEvent, KeyModifiers, MouseEvent as CrosstermMouseEvent, - MouseEventKind as CrosstermMouseEventKind, + Event as CrosstermEvent, KeyCode, KeyEvent, KeyEventKind, KeyModifiers, + MouseEvent as CrosstermMouseEvent, MouseEventKind as CrosstermMouseEventKind, }; #[cfg(feature = "arbitrary")] use arbitrary::Arbitrary; +#[cfg(any(feature = "crossterm", feature = "ratatui-crossterm"))] +use log::trace; #[cfg(any(feature = "termion", feature = "ratatui-termion"))] use termion::event::{Event as TermionEvent, Key as TermionKey, MouseEvent as TermionMouseEvent}; @@ -99,8 +101,9 @@ impl Default for Input { impl From for Input { /// Convert [`crossterm::event::Event`] to [`Input`]. fn from(event: CrosstermEvent) -> Self { + trace!("Cross Event:{:?}", event); match event { - CrosstermEvent::Key(key) => Self::from(key), + CrosstermEvent::Key(key) if key.kind == KeyEventKind::Press => Self::from(key), CrosstermEvent::Mouse(mouse) => Self::from(mouse), _ => Self::default(), }