feat: only send relevant mouse events to input handler

This commit is contained in:
Jack Wills
2023-03-02 16:01:37 +00:00
parent 0061ca1f37
commit 507660d835
+8 -4
View File
@@ -128,9 +128,6 @@ impl Ui {
} }
} }
// This is a fix for mouse-events being printed to screen
self.nullify_event_read();
if self if self
.terminal .terminal
.draw(|f| draw_blocks::error(f, AppError::DockerConnect, Some(seconds))) .draw(|f| draw_blocks::error(f, AppError::DockerConnect, Some(seconds)))
@@ -159,14 +156,21 @@ impl Ui {
if let Ok(event) = event::read() { if let Ok(event) = event::read() {
if let Event::Key(key) = event { if let Event::Key(key) = event {
self.sender self.sender
.send(InputMessages::ButtonPress(key.code)) .send(InputMessages::ButtonPress((key.code, key.modifiers)))
.await .await
.unwrap_or(()); .unwrap_or(());
} else if let Event::Mouse(m) = event { } else if let Event::Mouse(m) = event {
match m.kind {
event::MouseEventKind::Down(_)
| event::MouseEventKind::ScrollDown
| event::MouseEventKind::ScrollUp => {
self.sender self.sender
.send(InputMessages::MouseEvent(m)) .send(InputMessages::MouseEvent(m))
.await .await
.unwrap_or(()); .unwrap_or(());
}
_ => (),
}
} else if let Event::Resize(_, _) = event { } else if let Event::Resize(_, _) = event {
self.gui_state.lock().clear_area_map(); self.gui_state.lock().clear_area_map();
self.terminal.autoresize().unwrap_or(()); self.terminal.autoresize().unwrap_or(());