From 990f317b710b8a717f9150d0c5823d810aa39a06 Mon Sep 17 00:00:00 2001 From: Frederic Culot Date: Sun, 22 Apr 2007 16:25:36 +0000 Subject: handle different returned values for ncurses pair_content() function --- src/custom.c | 46 +++++++++++++++++++++++++++++++--------------- 1 file changed, 31 insertions(+), 15 deletions(-) (limited to 'src/custom.c') diff --git a/src/custom.c b/src/custom.c index 584596f..731d1f5 100755 --- a/src/custom.c +++ b/src/custom.c @@ -1,4 +1,4 @@ -/* $calcurse: custom.c,v 1.8 2007/04/21 15:12:32 culot Exp $ */ +/* $calcurse: custom.c,v 1.9 2007/04/22 16:25:36 culot Exp $ */ /* * Calcurse - text-based organizer @@ -264,10 +264,12 @@ layout_config(int layout) void custom_color_config(int notify_bar) { -#define SIZE (2 * (NBUSERCOLORS + 1)) -#define CURSOR (32 | A_REVERSE) -#define SPACE (32) -#define MARK (88) +#define SIZE (2 * (NBUSERCOLORS + 1)) +#define CURSOR (32 | A_REVERSE) +#define SPACE 32 +#define MARK 88 +#define DEFAULTCOLOR 255 +#define DEFAULTCOLOR_EXT -1 enum { YPOS, @@ -350,12 +352,22 @@ custom_color_config(int notify_bar) /* Retrieve the actual color theme. */ pair_content(COLR_CUSTOM, &colr_fore, &colr_back); - for (i = 0; i < NBUSERCOLORS + 1; i++) { - if (colr_fore == colr[i]) - mark_fore = i; - if (colr_back == colr[NBUSERCOLORS + 1 + i]) - mark_back = NBUSERCOLORS + 1 + i; - } + if ((colr_fore == DEFAULTCOLOR) || + (colr_fore == DEFAULTCOLOR_EXT)) + mark_fore = NBUSERCOLORS; + else + for (i = 0; i < NBUSERCOLORS; i++) + if (colr_fore == colr[i]) + mark_fore = i; + + if ((colr_back == DEFAULTCOLOR) || + (colr_back == DEFAULTCOLOR_EXT)) + mark_back = SIZE - 1; + else + for (i = 0; i < NBUSERCOLORS; i++) + if (colr_back == colr[NBUSERCOLORS + 1 + i]) + mark_back = NBUSERCOLORS + 1 + i; + mvwaddch(conf_win, pos[mark_fore][YPOS], pos[mark_fore][XPOS] + 1, MARK); mvwaddch(conf_win, pos[mark_back][YPOS], @@ -570,13 +582,16 @@ custom_load_color(char *color, int background) * foreground color 'on' background color * in order to dump this data in the configuration file. * Color numbers follow the ncurses library definitions. + * If ncurses library was compiled with --enable-ext-funcs, + * then default color is -1. */ void custom_color_theme_name(char *theme_name) { -#define MAXCOLORS 8 -#define NBCOLORS 2 -#define DEFAULTCOLOR 255 +#define MAXCOLORS 8 +#define NBCOLORS 2 +#define DEFAULTCOLOR 255 +#define DEFAULTCOLOR_EXT -1 int i; short color[NBCOLORS]; @@ -599,7 +614,8 @@ custom_color_theme_name(char *theme_name) else { pair_content(COLR_CUSTOM, &color[0], &color[1]); for (i = 0; i < NBCOLORS; i++) { - if (color[i] == DEFAULTCOLOR) + if ((color[i] == DEFAULTCOLOR) || + (color[i] == DEFAULTCOLOR_EXT)) color_name[i] = default_color; else if (color[i] >= 0 && color[i] <= MAXCOLORS) color_name[i] = name[color[i]]; -- cgit v1.2.3-54-g00ecf