tApply ATTR_REVERSE after ATTR_FAINT - st - [fork] customized build of st, the … | |
git clone git://src.adamsgaard.dk/st | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit e829e13bb1a830e0cdce749ea0865cd93af1846c | |
parent c1d23afa9c44cc29818c538126790ae90a64a3c5 | |
Author: Benno Fünfstück <[email protected]> | |
Date: Tue, 26 Dec 2017 16:38:27 +0100 | |
Apply ATTR_REVERSE after ATTR_FAINT | |
An example where the new behaviour makes more sense: | |
Suppose some text is formatted with ATTR_FAINT for red for the foreground, so it | |
is rendered in a dark red. In that case, when selected with the mouse, the | |
intended behaviour is that foreground and background color are swapped: so the | |
selection should be rendered in dark red and the text in the default background | |
color. | |
Before this patch, what happened was that the selection would be in normal red | |
and the text in the darkened background color, making it almost unreadable. | |
For an example application that uses the FAINT attribute, try dmesg from | |
util-linux with color support, it uses FAINT for segfault messages. | |
Diffstat: | |
M x.c | 13 +++++++------ | |
1 file changed, 7 insertions(+), 6 deletions(-) | |
--- | |
diff --git a/x.c b/x.c | |
t@@ -1189,12 +1189,6 @@ xdrawglyphfontspecs(const XftGlyphFontSpec *specs, Glyp… | |
} | |
} | |
- if (base.mode & ATTR_REVERSE) { | |
- temp = fg; | |
- fg = bg; | |
- bg = temp; | |
- } | |
- | |
if ((base.mode & ATTR_BOLD_FAINT) == ATTR_FAINT) { | |
colfg.red = fg->color.red / 2; | |
colfg.green = fg->color.green / 2; | |
t@@ -1203,6 +1197,13 @@ xdrawglyphfontspecs(const XftGlyphFontSpec *specs, Glyp… | |
fg = &revfg; | |
} | |
+ | |
+ if (base.mode & ATTR_REVERSE) { | |
+ temp = fg; | |
+ fg = bg; | |
+ bg = temp; | |
+ } | |
+ | |
if (base.mode & ATTR_BLINK && term.mode & MODE_BLINK) | |
fg = bg; | |