diff options
| author | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-05-15 21:17:55 +0300 |
|---|---|---|
| committer | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-05-15 21:17:55 +0300 |
| commit | e1a84a8e340f09b9479ca2df333ba135a45d2048 (patch) | |
| tree | 23ebb0b08e3531a03373d0586372b07e93dd0dc8 /src/client/mod.rs | |
| parent | 73dba97521f5a0e3104518ef48b775a178998f52 (diff) | |
fix: force redraw on terminal focus gain
Diffstat (limited to 'src/client/mod.rs')
| -rw-r--r-- | src/client/mod.rs | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/client/mod.rs b/src/client/mod.rs index 1758ffdc..5d52f8b3 100644 --- a/src/client/mod.rs +++ b/src/client/mod.rs @@ -56,6 +56,12 @@ struct ClientState { kitty_graphics_enabled: bool, } +impl ClientState { + fn request_full_redraw(&mut self) { + self.blit_encoder = blit::BlitEncoder::new(); + } +} + // --------------------------------------------------------------------------- // Error types // --------------------------------------------------------------------------- @@ -497,6 +503,10 @@ async fn run_client_loop( match event { ClientLoopEvent::StdinInput(data) => { + let events = crate::raw_input::parse_raw_input_bytes_sync(&data); + if crate::raw_input::events_require_host_surface_redraw(&events) { + state.request_full_redraw(); + } let msg = ClientMessage::Input { data }; if let Err(e) = write_to_server(&mut write_stream, &msg) { return Err(ClientError::ConnectionLost(e)); |
