diff options
author | Hisham Muhammad <hisham@gobolinux.org> | 2018-02-05 07:01:12 +0100 |
---|---|---|
committer | Hisham Muhammad <hisham@gobolinux.org> | 2018-02-05 07:20:27 +0100 |
commit | ac2dff2881a7ab203750e8edf7a46b69ae492ed0 (patch) | |
tree | 863d44c3188c59f30499131e9d3791515e564e20 | |
parent | c50440f165b3bdb6b0f9d1dea7e8a945f70360ea (diff) |
Fix color behavior on some terminals.
Fixes #635.
-rw-r--r-- | CRT.c | 32 | ||||
-rw-r--r-- | CRT.h | 1 | ||||
-rw-r--r-- | ColorsPanel.c | 1 |
3 files changed, 19 insertions, 15 deletions
@@ -37,6 +37,7 @@ in the source distribution for its full text. #define White COLOR_WHITE #define ColorPairGrayBlack ColorPair(Magenta,Magenta) +#define ColorIndexGrayBlack ColorIndex(Magenta,Magenta) #define KEY_WHEELUP KEY_F(20) #define KEY_WHEELDOWN KEY_F(21) @@ -713,22 +714,23 @@ void CRT_enableDelay() { void CRT_setColors(int colorScheme) { CRT_colorScheme = colorScheme; - if (colorScheme == COLORSCHEME_BLACKNIGHT) { - for (int i = 0; i < 8; i++) - for (int j = 0; j < 8; j++) { - if (ColorIndex(i,j) != ColorIndex(Magenta,Magenta)) { - init_pair(ColorIndex(i,j), i, j); - } - } - init_pair(ColorIndex(Magenta,Magenta), 8, 0); - } else { - for (int i = 0; i < 8; i++) - for (int j = 0; j < 8; j++) { - if (ColorIndex(i,j) != ColorIndex(Magenta,Magenta)) { - init_pair(ColorIndex(i,j), i, (j==0?-1:j)); - } + + for (int i = 0; i < 8; i++) { + for (int j = 0; j < 8; j++) { + if (ColorIndex(i,j) != ColorPairGrayBlack) { + int bg = (colorScheme != COLORSCHEME_BLACKNIGHT) + ? (j==0 ? -1 : j) + : j; + init_pair(ColorIndex(i,j), i, bg); } - init_pair(ColorIndex(Magenta,Magenta), 8, -1); + } } + + int grayBlackFg = COLORS > 8 ? 8 : 0; + int grayBlackBg = (colorScheme != COLORSCHEME_BLACKNIGHT) + ? -1 + : 0; + init_pair(ColorIndexGrayBlack, grayBlackFg, grayBlackBg); + CRT_colors = CRT_colorSchemes[colorScheme]; } @@ -26,6 +26,7 @@ in the source distribution for its full text. #define White COLOR_WHITE #define ColorPairGrayBlack ColorPair(Magenta,Magenta) +#define ColorIndexGrayBlack ColorIndex(Magenta,Magenta) #define KEY_WHEELUP KEY_F(20) #define KEY_WHEELDOWN KEY_F(21) diff --git a/ColorsPanel.c b/ColorsPanel.c index 627a516a..2028335f 100644 --- a/ColorsPanel.c +++ b/ColorsPanel.c @@ -78,6 +78,7 @@ static HandlerResult ColorsPanel_eventHandler(Panel* super, int ch) { this->settings->changed = true; const Header* header = this->scr->header; CRT_setColors(mark); + clear(); Panel* menu = (Panel*) Vector_get(this->scr->panels, 0); Header_draw(header); RichString_setAttr(&(super->header), CRT_colors[PANEL_HEADER_FOCUS]); |