diff --git a/src/messages.rs b/src/messages.rs index 3dcbb38..5658bf6 100644 --- a/src/messages.rs +++ b/src/messages.rs @@ -42,6 +42,16 @@ pub enum WindowMessageResponse { DoNothing, } +impl WindowMessageResponse { + pub fn is_key_char_request(&self) -> bool { + if let WindowMessageResponse::Request(WindowManagerRequest::DoKeyChar(_)) = self { + true + } else { + false + } + } +} + #[derive(Serialize, Deserialize)] pub struct KeyPress { pub key: char, diff --git a/src/window_manager.rs b/src/window_manager.rs index 6026cbc..ea77204 100644 --- a/src/window_manager.rs +++ b/src/window_manager.rs @@ -648,11 +648,14 @@ impl WindowManager { } }; if response != WindowMessageResponse::DoNothing { + let is_key_char_request = response.is_key_char_request(); match response { WindowMessageResponse::Request(request) => self.handle_request(request), _ => {}, }; - self.draw(redraw_ids, use_saved_buffer); + if !is_key_char_request { + self.draw(redraw_ids, use_saved_buffer); + } } }