other: add a redraw event on resize (#926)

This commit is contained in:
Clement Tsang 2022-12-05 04:34:19 -05:00 committed by GitHub
parent ac5e2ce4a2
commit 1920f4b2e1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 12 additions and 0 deletions

View File

@ -157,6 +157,9 @@ fn main() -> Result<()> {
// TODO: Would be good to instead use a mix of is_terminated check + recv. Probably use a termination event instead.
if let Ok(recv) = receiver.recv_timeout(Duration::from_millis(TICK_RATE_IN_MILLISECONDS)) {
match recv {
BottomEvent::Resize => {
try_drawing(&mut terminal, &mut app, &mut painter)?;
}
BottomEvent::KeyInput(event) => {
if handle_key_event_or_break(event, &mut app, &collection_thread_ctrl_sender) {
break;

View File

@ -71,6 +71,7 @@ pub type Pid = libc::pid_t;
#[derive(Debug)]
pub enum BottomEvent {
Resize,
KeyInput(KeyEvent),
MouseInput(MouseEvent),
PasteEvent(String),
@ -431,6 +432,14 @@ pub fn create_input_thread(
if let Ok(event) = read() {
// FIXME: Handle all other event cases.
match event {
// TODO: Might want to debounce this in the future, or take into account the actual resize
// values. Maybe we want to keep the current implementation in case the resize event might
// not fire... not sure.
Event::Resize(_, _) => {
if sender.send(BottomEvent::Resize).is_err() {
break;
}
}
Event::Paste(paste) => {
if sender.send(BottomEvent::PasteEvent(paste)).is_err() {
break;