summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorfelixh <felixh@github.com>2023-11-19 14:07:49 +1030
committerfelixh <felixh@github.com>2023-11-19 14:07:49 +1030
commitb55d1a5e8c2e58fdc6054a16fa440ecc0959edfa (patch)
tree3d36ceaea34146de91b40e5ffca51308584192ac
parente1b0de7ad150fe2aebe328dc767af26e7b56c97d (diff)
Fixed button press for windows
Added a filter to every user input to reject Keyup events. This is required on the windows platform
-rw-r--r--src/run.rs25
-rw-r--r--src/state.rs5
2 files changed, 16 insertions, 14 deletions
diff --git a/src/run.rs b/src/run.rs
index 13abbbb..0c6f39f 100644
--- a/src/run.rs
+++ b/src/run.rs
@@ -390,7 +390,7 @@ fn _run(mut state: State, session_path: PathBuf) -> Result<(), FxError> {
show_cursor();
screen.flush()?;
- if let Event::Key(KeyEvent { code, .. }) = event::read()? {
+ if let Event::Key(KeyEvent { code, kind: KeyEventKind::Press, .. }) = event::read()? {
match code {
KeyCode::Char('g') => {
hide_cursor();
@@ -414,7 +414,7 @@ fn _run(mut state: State, session_path: PathBuf) -> Result<(), FxError> {
show_cursor();
screen.flush()?;
- if let Event::Key(KeyEvent { code, .. }) = event::read()? {
+ if let Event::Key(KeyEvent { code, kind: KeyEventKind::Press, .. }) = event::read()? {
match code {
KeyCode::Char('g') => {
hide_cursor();
@@ -629,7 +629,7 @@ fn _run(mut state: State, session_path: PathBuf) -> Result<(), FxError> {
let mut current_pos = 3;
'zoxide: loop {
- if let Event::Key(KeyEvent { code, .. }) = event::read()? {
+ if let Event::Key(KeyEvent { code, kind: KeyEventKind::Press, .. }) = event::read()? {
match code {
KeyCode::Esc => {
go_to_info_line_and_reset();
@@ -790,14 +790,15 @@ fn _run(mut state: State, session_path: PathBuf) -> Result<(), FxError> {
let mut current_char_pos = 0;
'insert: loop {
if let Event::Key(KeyEvent {
- code, modifiers, ..
+ code, modifiers,
+ kind: KeyEventKind::Press, ..
}) = event::read()?
{
// <C-r> to put the item name(s) from register
if modifiers == KeyModifiers::CONTROL
&& code == KeyCode::Char('r')
{
- if let Event::Key(KeyEvent { code, .. }) =
+ if let Event::Key(KeyEvent { code, kind:KeyEventKind::Press, .. }) =
event::read()?
{
if let Some(reg) = state.registers.check_reg(&code)
@@ -1066,7 +1067,7 @@ fn _run(mut state: State, session_path: PathBuf) -> Result<(), FxError> {
show_cursor();
screen.flush()?;
- if let Event::Key(KeyEvent { code, .. }) = event::read()? {
+ if let Event::Key(KeyEvent { code, kind: KeyEventKind::Press, .. }) = event::read()? {
match code {
KeyCode::Char('d') => {
if let Err(e) =
@@ -1171,7 +1172,7 @@ fn _run(mut state: State, session_path: PathBuf) -> Result<(), FxError> {
let (mut current_pos, _) = cursor_pos()?;
let mut current_char_pos = rename.len();
loop {
- if let Event::Key(KeyEvent { code, .. }) = event::read()? {
+ if let Event::Key(KeyEvent { code, kind: KeyEventKind::Press, .. }) = event::read()? {
match code {
//rename item
KeyCode::Enter => {
@@ -1305,7 +1306,7 @@ fn _run(mut state: State, session_path: PathBuf) -> Result<(), FxError> {
// express position in Vec<Char>
let mut current_char_pos = 0;
loop {
- if let Event::Key(KeyEvent { code, .. }) = event::read()? {
+ if let Event::Key(KeyEvent { code,kind: KeyEventKind::Press, .. }) = event::read()? {
match code {
KeyCode::Enter => {
go_to_info_line_and_reset();
@@ -1509,7 +1510,7 @@ fn _run(mut state: State, session_path: PathBuf) -> Result<(), FxError> {
let mut current_pos = INITIAL_POS_COMMAND_LINE;
'reg: loop {
- if let Event::Key(KeyEvent { code, .. }) = event::read()? {
+ if let Event::Key(KeyEvent { code, kind: KeyEventKind::Press, .. }) = event::read()? {
match code {
KeyCode::Esc => {
go_to_info_line_and_reset();
@@ -1887,14 +1888,14 @@ fn _run(mut state: State, session_path: PathBuf) -> Result<(), FxError> {
let mut current_char_pos = 0;
'command: loop {
if let Event::Key(KeyEvent {
- code, modifiers, ..
+ code, modifiers, kind: KeyEventKind::Press, ..
}) = event::read()?
{
// <C-r> to put the item name(s) in register
if modifiers == KeyModifiers::CONTROL
&& code == KeyCode::Char('r')
{
- if let Event::Key(KeyEvent { code, .. }) =
+ if let Event::Key(KeyEvent { code, kind: KeyEventKind::Press, .. }) =
event::read()?
{
if let Some(reg) = state.registers.check_reg(&code)
@@ -2230,7 +2231,7 @@ fn _run(mut state: State, session_path: PathBuf) -> Result<(), FxError> {
show_cursor();
screen.flush()?;
- if let Event::Key(KeyEvent { code, .. }) = event::read()? {
+ if let Event::Key(KeyEvent { code, kind: KeyEventKind::Press, .. }) = event::read()? {
match code {
KeyCode::Char('Q') => {
if state.match_vim_exit_behavior
diff --git a/src/state.rs b/src/state.rs
index bbfd149..29fa9d4 100644
--- a/src/state.rs
+++ b/src/state.rs
@@ -12,6 +12,7 @@ use super::session::*;
use super::term::*;
use chrono::prelude::*;
+use crossterm::event::KeyEventKind;
use crossterm::event::{Event, KeyCode, KeyEvent};
use crossterm::style::Stylize;
use log::{error, info};
@@ -1398,7 +1399,7 @@ impl State {
let mut skip = 0;
loop {
- if let Event::Key(KeyEvent { code, .. }) = crossterm::event::read()? {
+ if let Event::Key(KeyEvent { code, kind: KeyEventKind::Press, .. }) = crossterm::event::read()? {
match code {
KeyCode::Char('j') | KeyCode::Down => {
clear_all();
@@ -1432,7 +1433,7 @@ impl State {
print_warning(EMPTY_WARNING, self.layout.y);
screen.flush()?;
- if let Event::Key(KeyEvent { code, .. }) = crossterm::event::read()? {
+ if let Event::Key(KeyEvent { code, kind: KeyEventKind::Press,.. }) = crossterm::event::read()? {
match code {
KeyCode::Char('y') | KeyCode::Char('Y') => {
print_info("EMPTY: Processing...", self.layout.y);