From b876843adfd5338c412a1a6178084bd488642961 Mon Sep 17 00:00:00 2001 From: Aram Drevekenin Date: Mon, 9 Nov 2020 18:53:22 +0100 Subject: [PATCH] fix(colors): send full style reset in diff (#32) --- src/terminal_pane/terminal_character.rs | 26 +++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/src/terminal_pane/terminal_character.rs b/src/terminal_pane/terminal_character.rs index dd45a7af..53418306 100644 --- a/src/terminal_pane/terminal_character.rs +++ b/src/terminal_pane/terminal_character.rs @@ -153,6 +153,32 @@ impl CharacterStyles { } pub fn update_and_return_diff(&mut self, new_styles: &CharacterStyles) -> Option { let mut diff: Option = None; + + if new_styles.foreground == Some(AnsiCode::Reset) && + new_styles.background == Some(AnsiCode::Reset) && + new_styles.strike == Some(AnsiCode::Reset) && + new_styles.hidden == Some(AnsiCode::Reset) && + new_styles.reverse == Some(AnsiCode::Reset) && + new_styles.fast_blink == Some(AnsiCode::Reset) && + new_styles.slow_blink == Some(AnsiCode::Reset) && + new_styles.underline == Some(AnsiCode::Reset) && + new_styles.bold == Some(AnsiCode::Reset) && + new_styles.dim == Some(AnsiCode::Reset) && + new_styles.italic == Some(AnsiCode::Reset) { + self.foreground = Some(AnsiCode::Reset); + self.background = Some(AnsiCode::Reset); + self.strike = Some(AnsiCode::Reset); + self.hidden = Some(AnsiCode::Reset); + self.reverse = Some(AnsiCode::Reset); + self.fast_blink = Some(AnsiCode::Reset); + self.slow_blink = Some(AnsiCode::Reset); + self.underline = Some(AnsiCode::Reset); + self.bold = Some(AnsiCode::Reset); + self.dim = Some(AnsiCode::Reset); + self.italic = Some(AnsiCode::Reset); + return Some(*new_styles) + }; + if self.foreground != new_styles.foreground { if let Some(new_diff) = diff.as_mut() { diff = Some(new_diff.foreground(new_styles.foreground));