From e428a27af95c4b79474452aac8dd5e8fecb85984 Mon Sep 17 00:00:00 2001 From: Jaromir Capik Date: Mon, 8 Sep 2014 15:50:24 +0200 Subject: [PATCH] watch: fixing default color handling Previously the default background color was expected to be always black and the default foreground color was expected to be always white. This commit extends the group of color pairs with pairs containing default colors. --- watch.c | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/watch.c b/watch.c index b0c132ff..84fd58be 100644 --- a/watch.c +++ b/watch.c @@ -111,11 +111,19 @@ static int attributes; static int fg_col; static int bg_col; + +static void reset_ansi(void) +{ + attributes = A_NORMAL; + fg_col = 0; + bg_col = 0; +} + static void init_ansi_colors(void) { short ncurses_colors[] = { - COLOR_BLACK, COLOR_RED, COLOR_GREEN, COLOR_YELLOW, COLOR_BLUE, - COLOR_MAGENTA, COLOR_CYAN, COLOR_WHITE + -1, COLOR_BLACK, COLOR_RED, COLOR_GREEN, COLOR_YELLOW, + COLOR_BLUE, COLOR_MAGENTA, COLOR_CYAN, COLOR_WHITE }; nr_of_colors = sizeof(ncurses_colors) / sizeof(short); @@ -123,11 +131,7 @@ static void init_ansi_colors(void) for (bg_col = 0; bg_col < nr_of_colors; bg_col++) for (fg_col = 0; fg_col < nr_of_colors; fg_col++) init_pair(bg_col * nr_of_colors + fg_col + 1, ncurses_colors[fg_col], ncurses_colors[bg_col]); - - /* default settings */ - attributes = A_NORMAL; - fg_col = COLOR_WHITE; - bg_col = COLOR_BLACK; + reset_ansi(); } @@ -137,9 +141,7 @@ static void set_ansi_attribute(const int attrib) case -1: /* restore last settings */ break; case 0: /* restore default settings */ - attributes = A_NORMAL; - fg_col = COLOR_WHITE; - bg_col = COLOR_BLACK; + reset_ansi(); break; case 1: /* set bold / increased intensity */ attributes |= A_BOLD; @@ -183,9 +185,9 @@ static void set_ansi_attribute(const int attrib) break; default: if (attrib >= 30 && attrib <= 37) { /* set foreground color */ - fg_col = attrib - 30; + fg_col = attrib - 30 + 1; } else if (attrib >= 40 && attrib <= 47) { /* set background color */ - bg_col = attrib - 40; + bg_col = attrib - 40 + 1; } } @@ -469,6 +471,7 @@ static int run_command(char *restrict command, char **restrict command_argv) if ((p = fdopen(pipefd[0], "r")) == NULL) xerr(5, _("fdopen")); + reset_ansi(); for (y = show_title; y < height; y++) { int eolseen = 0, tabpending = 0, tabwaspending; set_ansi_attribute(-1);