I've fixed this using use_default_colors(), which I believe are
ncurses extensions (but I think I was ncurses-specific already owing
to KEY_RESIZE).
git-svn-id: svn://svn.tartarus.org/sgt/tweak@4949
cda61777-01e9-0310-a592-
d414129be87e
move(0,0);
refresh();
get_screen_size();
- if (has_colors())
+ if (has_colors()) {
start_color();
+ use_default_colors();
+ }
}
void display_cleanup(void)
COLOR_WHITE,
};
- assert(colour >= 0 && colour < MAXCOLOURS && colour < COLOR_PAIRS-2);
-
- assert(!(bg & ~7)); /* bold backgrounds are nonportable */
- init_pair(colour+1, colours[fg & 7], colours[bg]);
- attrs[colour] = (fg & 8 ? A_BOLD : 0) | COLOR_PAIR(colour+1);
+ if (fg < 0 && bg < 0) {
+ attrs[colour] = 0;
+ } else {
+ assert(colour >= 0 && colour < MAXCOLOURS && colour < COLOR_PAIRS-2);
+ assert(!(bg & ~7)); /* bold backgrounds are nonportable */
+ init_pair(colour+1, colours[fg & 7], colours[bg]);
+ attrs[colour] = (fg & 8 ? A_BOLD : 0) | COLOR_PAIR(colour+1);
+ }
}
void display_set_colour(int colour)
display_setup();
- display_define_colour(COL_BUFFER, 7, 0);
+ display_define_colour(COL_BUFFER, -1, -1);
display_define_colour(COL_SELECT, 0, 7);
display_define_colour(COL_STATUS, 11, 4);
display_define_colour(COL_ESCAPE, 9, 0);
display_write_chars(linebuf+10+3*localstop,
2+3*width-3*localstop);
}
- } else
+ } else {
+ display_set_colour(COL_BUFFER);
display_write_chars(linebuf,
ascii_enabled ? 13+4*width : 10+3*width);
+ }
}
currpos += (currpos ? width : offset);
display_clear_to_eol();
};
char cname[40];
+ if (fg < 0 && bg < 0) {
+ /* FIXME: not sure how to support terminal default fg+bg */
+ fg = 7;
+ bg = 0;
+ }
+
sprintf(cname, "colour%d", colour);
SLtt_set_color(colour, cname, colours[fg], colours[bg]);