diff --git a/codex-rs/tui/src/bottom_pane/chat_composer.rs b/codex-rs/tui/src/bottom_pane/chat_composer.rs index 58b6b5611f5..93b3a5eeccc 100644 --- a/codex-rs/tui/src/bottom_pane/chat_composer.rs +++ b/codex-rs/tui/src/bottom_pane/chat_composer.rs @@ -3141,12 +3141,20 @@ impl ChatComposer { } } - pub(crate) fn set_status_line(&mut self, status_line: Option>) { + pub(crate) fn set_status_line(&mut self, status_line: Option>) -> bool { + if self.status_line_value == status_line { + return false; + } self.status_line_value = status_line; + true } - pub(crate) fn set_status_line_enabled(&mut self, enabled: bool) { + pub(crate) fn set_status_line_enabled(&mut self, enabled: bool) -> bool { + if self.status_line_enabled == enabled { + return false; + } self.status_line_enabled = enabled; + true } } diff --git a/codex-rs/tui/src/bottom_pane/mod.rs b/codex-rs/tui/src/bottom_pane/mod.rs index 226e91abb4d..d4a337e06a0 100644 --- a/codex-rs/tui/src/bottom_pane/mod.rs +++ b/codex-rs/tui/src/bottom_pane/mod.rs @@ -905,13 +905,15 @@ impl BottomPane { } pub(crate) fn set_status_line(&mut self, status_line: Option>) { - self.composer.set_status_line(status_line); - self.request_redraw(); + if self.composer.set_status_line(status_line) { + self.request_redraw(); + } } pub(crate) fn set_status_line_enabled(&mut self, enabled: bool) { - self.composer.set_status_line_enabled(enabled); - self.request_redraw(); + if self.composer.set_status_line_enabled(enabled) { + self.request_redraw(); + } } } diff --git a/codex-rs/tui/src/chatwidget.rs b/codex-rs/tui/src/chatwidget.rs index 0f98e0f49de..2dfe7039e5a 100644 --- a/codex-rs/tui/src/chatwidget.rs +++ b/codex-rs/tui/src/chatwidget.rs @@ -865,10 +865,9 @@ impl ChatWidget { self.set_status(header, None); } - /// Sets the currently rendered footer status-line value and schedules a redraw. + /// Sets the currently rendered footer status-line value. pub(crate) fn set_status_line(&mut self, status_line: Option>) { self.bottom_pane.set_status_line(status_line); - self.request_redraw(); } /// Recomputes footer status-line content from config and current runtime state.