mirror of
https://github.com/tmux/tmux.git
synced 2025-03-28 01:08:53 +00:00
Fix some issues in bright colour handling. Bold background doesn't exist
so there is no reason for tty_check_bg to mess with the BRIGHT flag at all, ever. Also use aixterm colours for 256-to-16 translation if the terminal supports them. And there is no reason for tty_colours_bg to worry about whether the terminal supports them - tty_check_bg has already taken care of it.
This commit is contained in:
parent
eec27f9257
commit
4a7587931c
32
tty.c
32
tty.c
@ -1453,6 +1453,8 @@ tty_check_fg(struct tty *tty, struct grid_cell *gc)
|
|||||||
{
|
{
|
||||||
u_int colours;
|
u_int colours;
|
||||||
|
|
||||||
|
colours = tty_term_number(tty->term, TTYC_COLORS);
|
||||||
|
|
||||||
/* Is this a 256-colour colour? */
|
/* Is this a 256-colour colour? */
|
||||||
if (gc->flags & GRID_FLAG_FG256) {
|
if (gc->flags & GRID_FLAG_FG256) {
|
||||||
/* And not a 256 colour mode? */
|
/* And not a 256 colour mode? */
|
||||||
@ -1461,7 +1463,10 @@ tty_check_fg(struct tty *tty, struct grid_cell *gc)
|
|||||||
gc->fg = colour_256to16(gc->fg);
|
gc->fg = colour_256to16(gc->fg);
|
||||||
if (gc->fg & 8) {
|
if (gc->fg & 8) {
|
||||||
gc->fg &= 7;
|
gc->fg &= 7;
|
||||||
gc->attr |= GRID_ATTR_BRIGHT;
|
if (colours >= 16)
|
||||||
|
gc->fg += 90;
|
||||||
|
else
|
||||||
|
gc->attr |= GRID_ATTR_BRIGHT;
|
||||||
} else
|
} else
|
||||||
gc->attr &= ~GRID_ATTR_BRIGHT;
|
gc->attr &= ~GRID_ATTR_BRIGHT;
|
||||||
gc->flags &= ~GRID_FLAG_FG256;
|
gc->flags &= ~GRID_FLAG_FG256;
|
||||||
@ -1470,7 +1475,6 @@ tty_check_fg(struct tty *tty, struct grid_cell *gc)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Is this an aixterm colour? */
|
/* Is this an aixterm colour? */
|
||||||
colours = tty_term_number(tty->term, TTYC_COLORS);
|
|
||||||
if (gc->fg >= 90 && gc->fg <= 97 && colours < 16) {
|
if (gc->fg >= 90 && gc->fg <= 97 && colours < 16) {
|
||||||
gc->fg -= 90;
|
gc->fg -= 90;
|
||||||
gc->attr |= GRID_ATTR_BRIGHT;
|
gc->attr |= GRID_ATTR_BRIGHT;
|
||||||
@ -1482,6 +1486,8 @@ tty_check_bg(struct tty *tty, struct grid_cell *gc)
|
|||||||
{
|
{
|
||||||
u_int colours;
|
u_int colours;
|
||||||
|
|
||||||
|
colours = tty_term_number(tty->term, TTYC_COLORS);
|
||||||
|
|
||||||
/* Is this a 256-colour colour? */
|
/* Is this a 256-colour colour? */
|
||||||
if (gc->flags & GRID_FLAG_BG256) {
|
if (gc->flags & GRID_FLAG_BG256) {
|
||||||
/*
|
/*
|
||||||
@ -1492,20 +1498,19 @@ tty_check_bg(struct tty *tty, struct grid_cell *gc)
|
|||||||
if (!(tty->term->flags & TERM_256COLOURS) &&
|
if (!(tty->term->flags & TERM_256COLOURS) &&
|
||||||
!(tty->term_flags & TERM_256COLOURS)) {
|
!(tty->term_flags & TERM_256COLOURS)) {
|
||||||
gc->bg = colour_256to16(gc->bg);
|
gc->bg = colour_256to16(gc->bg);
|
||||||
if (gc->bg & 8)
|
if (gc->bg & 8) {
|
||||||
gc->bg &= 7;
|
gc->bg &= 7;
|
||||||
gc->attr &= ~GRID_ATTR_BRIGHT;
|
if (colours >= 16)
|
||||||
|
gc->fg += 90;
|
||||||
|
}
|
||||||
gc->flags &= ~GRID_FLAG_BG256;
|
gc->flags &= ~GRID_FLAG_BG256;
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Is this an aixterm colour? */
|
/* Is this an aixterm colour? */
|
||||||
colours = tty_term_number(tty->term, TTYC_COLORS);
|
if (gc->bg >= 90 && gc->bg <= 97 && colours < 16)
|
||||||
if (gc->bg >= 90 && gc->bg <= 97 && colours < 16) {
|
|
||||||
gc->bg -= 90;
|
gc->bg -= 90;
|
||||||
gc->attr |= GRID_ATTR_BRIGHT;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -1559,14 +1564,9 @@ tty_colours_bg(struct tty *tty, const struct grid_cell *gc)
|
|||||||
|
|
||||||
/* Is this an aixterm bright colour? */
|
/* Is this an aixterm bright colour? */
|
||||||
if (bg >= 90 && bg <= 97) {
|
if (bg >= 90 && bg <= 97) {
|
||||||
/* 16 colour terminals or above only. */
|
xsnprintf(s, sizeof s, "\033[%dm", bg + 10);
|
||||||
if (tty_term_number(tty->term, TTYC_COLORS) >= 16) {
|
tty_puts(tty, s);
|
||||||
xsnprintf(s, sizeof s, "\033[%dm", bg + 10);
|
goto save_bg;
|
||||||
tty_puts(tty, s);
|
|
||||||
goto save_bg;
|
|
||||||
}
|
|
||||||
bg -= 90;
|
|
||||||
/* no such thing as a bold background */
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Otherwise set the background colour. */
|
/* Otherwise set the background colour. */
|
||||||
|
Loading…
Reference in New Issue
Block a user