diff options
author | Christian Duerr <chrisduerr@users.noreply.github.com> | 2019-04-25 16:51:45 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-04-25 16:51:45 +0000 |
commit | e964af8a5ea390d96667e80873060d33079134fd (patch) | |
tree | ace376cf701992bd25ce003074be2e460647a416 /src/term | |
parent | 73e7a95d543ccd0e197c923e305d4d7c45e273d8 (diff) | |
download | alacritty-e964af8a5ea390d96667e80873060d33079134fd.tar.gz alacritty-e964af8a5ea390d96667e80873060d33079134fd.zip |
Show same fg/bg text when inversed
If a cell has a matching foreground and background and is inversed
through the escape or selection, it will now fall back to the default
background on top of the default foreground.
This makes it possible to show invisible text like this by selecting it.
Hidden text is unaffected by this change.
This fixes #2315.
Diffstat (limited to 'src/term')
-rw-r--r-- | src/term/mod.rs | 29 |
1 files changed, 16 insertions, 13 deletions
diff --git a/src/term/mod.rs b/src/term/mod.rs index 0e95423d..2096e7a1 100644 --- a/src/term/mod.rs +++ b/src/term/mod.rs @@ -281,17 +281,19 @@ impl RenderableCell { let mut bg_rgb = Self::compute_bg_rgb(colors, cell.bg); let selection_background = config.colors().selection.background; - let bg_alpha = if let (true, Some(col)) = (selected, selection_background) { + if let (true, Some(col)) = (selected, selection_background) { // Override selection background with config colors bg_rgb = col; - 1.0 } else if selected ^ cell.inverse() { - // Invert cell fg and bg colors - mem::swap(&mut fg_rgb, &mut bg_rgb); - Self::compute_bg_alpha(cell.fg) - } else { - Self::compute_bg_alpha(cell.bg) - }; + if fg_rgb == bg_rgb && !cell.flags.contains(Flags::HIDDEN) { + // Reveal inversed text when fg/bg is the same + fg_rgb = colors[NamedColor::Background]; + bg_rgb = colors[NamedColor::Foreground]; + } else { + // Invert cell fg and bg colors + mem::swap(&mut fg_rgb, &mut bg_rgb); + } + } // Override selection text with config colors if let (true, Some(col)) = (selected, config.colors().selection.text) { @@ -304,7 +306,7 @@ impl RenderableCell { inner: RenderableCellContent::Chars(cell.chars()), fg: fg_rgb, bg: bg_rgb, - bg_alpha, + bg_alpha: Self::compute_bg_alpha(colors, bg_rgb), flags: cell.flags, } } @@ -347,10 +349,11 @@ impl RenderableCell { } #[inline] - fn compute_bg_alpha(bg: Color) -> f32 { - match bg { - Color::Named(NamedColor::Background) => 0.0, - _ => 1.0, + fn compute_bg_alpha(colors: &color::List, bg: Rgb) -> f32 { + if colors[NamedColor::Background] == bg { + 0. + } else { + 1. } } |