aboutsummaryrefslogtreecommitdiff
path: root/src/client
diff options
context:
space:
mode:
authorOgulcan Celik <ogulcancelik@gmail.com>2026-05-15 21:17:55 +0300
committerOgulcan Celik <ogulcancelik@gmail.com>2026-05-15 21:17:55 +0300
commite1a84a8e340f09b9479ca2df333ba135a45d2048 (patch)
tree23ebb0b08e3531a03373d0586372b07e93dd0dc8 /src/client
parent73dba97521f5a0e3104518ef48b775a178998f52 (diff)
fix: force redraw on terminal focus gain
Diffstat (limited to 'src/client')
-rw-r--r--src/client/mod.rs10
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));