=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/tmux/input.c,v retrieving revision 1.99 retrieving revision 1.100 diff -c -r1.99 -r1.100 *** src/usr.bin/tmux/input.c 2016/01/19 15:59:12 1.99 --- src/usr.bin/tmux/input.c 2016/01/29 11:13:56 1.100 *************** *** 1,4 **** ! /* $OpenBSD: input.c,v 1.99 2016/01/19 15:59:12 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott --- 1,4 ---- ! /* $OpenBSD: input.c,v 1.100 2016/01/29 11:13:56 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott *************** *** 1629,1646 **** c = input_get(ictx, *i, 0, -1); if (c == -1) { if (fgbg == 38) { ! gc->flags &= ~GRID_FLAG_FG256; gc->fg = 8; } else if (fgbg == 48) { ! gc->flags &= ~GRID_FLAG_BG256; gc->bg = 8; } } else { if (fgbg == 38) { gc->flags |= GRID_FLAG_FG256; gc->fg = c; } else if (fgbg == 48) { gc->flags |= GRID_FLAG_BG256; gc->bg = c; } } --- 1629,1648 ---- c = input_get(ictx, *i, 0, -1); if (c == -1) { if (fgbg == 38) { ! gc->flags &= ~(GRID_FLAG_FG256|GRID_FLAG_FGRGB); gc->fg = 8; } else if (fgbg == 48) { ! gc->flags &= ~(GRID_FLAG_BG256|GRID_FLAG_BGRGB); gc->bg = 8; } } else { if (fgbg == 38) { gc->flags |= GRID_FLAG_FG256; + gc->flags &= ~GRID_FLAG_FGRGB; gc->fg = c; } else if (fgbg == 48) { gc->flags |= GRID_FLAG_BG256; + gc->flags &= ~GRID_FLAG_BGRGB; gc->bg = c; } } *************** *** 1651,1657 **** input_csi_dispatch_sgr_rgb(struct input_ctx *ictx, int fgbg, u_int *i) { struct grid_cell *gc = &ictx->cell.cell; ! int c, r, g, b; (*i)++; r = input_get(ictx, *i, 0, -1); --- 1653,1659 ---- input_csi_dispatch_sgr_rgb(struct input_ctx *ictx, int fgbg, u_int *i) { struct grid_cell *gc = &ictx->cell.cell; ! int r, g, b; (*i)++; r = input_get(ictx, *i, 0, -1); *************** *** 1666,1678 **** if (b == -1 || b > 255) return; - c = colour_find_rgb(r, g, b); if (fgbg == 38) { ! gc->flags |= GRID_FLAG_FG256; ! gc->fg = c; } else if (fgbg == 48) { ! gc->flags |= GRID_FLAG_BG256; ! gc->bg = c; } } --- 1668,1685 ---- if (b == -1 || b > 255) return; if (fgbg == 38) { ! gc->flags &= ~GRID_FLAG_FG256; ! gc->flags |= GRID_FLAG_FGRGB; ! gc->fg_rgb.r = r; ! gc->fg_rgb.g = g; ! gc->fg_rgb.b = b; } else if (fgbg == 48) { ! gc->flags &= ~GRID_FLAG_BG256; ! gc->flags |= GRID_FLAG_BGRGB; ! gc->bg_rgb.r = r; ! gc->bg_rgb.g = g; ! gc->bg_rgb.b = b; } } *************** *** 1754,1764 **** case 35: case 36: case 37: ! gc->flags &= ~GRID_FLAG_FG256; gc->fg = n - 30; break; case 39: ! gc->flags &= ~GRID_FLAG_FG256; gc->fg = 8; break; case 40: --- 1761,1771 ---- case 35: case 36: case 37: ! gc->flags &= ~(GRID_FLAG_FG256|GRID_FLAG_FGRGB); gc->fg = n - 30; break; case 39: ! gc->flags &= ~(GRID_FLAG_FG256|GRID_FLAG_FGRGB); gc->fg = 8; break; case 40: *************** *** 1769,1779 **** case 45: case 46: case 47: ! gc->flags &= ~GRID_FLAG_BG256; gc->bg = n - 40; break; case 49: ! gc->flags &= ~GRID_FLAG_BG256; gc->bg = 8; break; case 90: --- 1776,1786 ---- case 45: case 46: case 47: ! gc->flags &= ~(GRID_FLAG_BG256|GRID_FLAG_BGRGB); gc->bg = n - 40; break; case 49: ! gc->flags &= ~(GRID_FLAG_BG256|GRID_FLAG_BGRGB); gc->bg = 8; break; case 90: *************** *** 1784,1790 **** case 95: case 96: case 97: ! gc->flags &= ~GRID_FLAG_FG256; gc->fg = n; break; case 100: --- 1791,1797 ---- case 95: case 96: case 97: ! gc->flags &= ~(GRID_FLAG_FG256|GRID_FLAG_FGRGB); gc->fg = n; break; case 100: *************** *** 1795,1801 **** case 105: case 106: case 107: ! gc->flags &= ~GRID_FLAG_BG256; gc->bg = n - 10; break; } --- 1802,1808 ---- case 105: case 106: case 107: ! gc->flags &= ~(GRID_FLAG_BG256|GRID_FLAG_BGRGB); gc->bg = n - 10; break; }