=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/tmux/screen-write.c,v retrieving revision 1.24 retrieving revision 1.25 diff -c -r1.24 -r1.25 *** src/usr.bin/tmux/screen-write.c 2009/09/07 10:49:32 1.24 --- src/usr.bin/tmux/screen-write.c 2009/09/10 17:16:24 1.25 *************** *** 1,4 **** ! /* $OpenBSD: screen-write.c,v 1.24 2009/09/07 10:49:32 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott --- 1,4 ---- ! /* $OpenBSD: screen-write.c,v 1.25 2009/09/10 17:16:24 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott *************** *** 300,306 **** char tmp[32]; int val; size_t end; ! u_char fg, bg, attr; if (*in == '\0') return; --- 300,306 ---- char tmp[32]; int val; size_t end; ! u_char fg, bg, attr, flags; if (*in == '\0') return; *************** *** 309,315 **** fg = gc->fg; bg = gc->bg; ! attr = 0; do { end = strcspn(in, delimiters); if (end > (sizeof tmp) - 1) --- 309,316 ---- fg = gc->fg; bg = gc->bg; ! attr = gc->attr; ! flags = gc->flags; do { end = strcspn(in, delimiters); if (end > (sizeof tmp) - 1) *************** *** 325,338 **** if ((val = colour_fromstring(tmp + 3)) == -1) return; if (*in == 'f' || *in == 'F') { ! if (val != 8) fg = val; ! else fg = defgc->fg; } else if (*in == 'b' || *in == 'B') { ! if (val != 8) bg = val; ! else bg = defgc->bg; } else return; --- 326,349 ---- if ((val = colour_fromstring(tmp + 3)) == -1) return; if (*in == 'f' || *in == 'F') { ! if (val != 8) { ! if (val & 0x100) { ! flags |= GRID_FLAG_FG256; ! val &= ~0x100; ! } else ! flags &= ~GRID_FLAG_FG256; fg = val; ! } else fg = defgc->fg; } else if (*in == 'b' || *in == 'B') { ! if (val != 8) { ! if (val & 0x100) { ! flags |= GRID_FLAG_BG256; ! val &= ~0x100; ! } else ! flags &= ~GRID_FLAG_BG256; bg = val; ! } else bg = defgc->bg; } else return; *************** *** 347,352 **** --- 358,364 ---- gc->fg = fg; gc->bg = bg; gc->attr = attr; + gc->flags = flags; } /* Copy from another screen. */ *************** *** 1002,1008 **** if (screen_check_selection(s, s->cx - width, s->cy)) { memcpy(&tmp_gc2, &s->sel.cell, sizeof tmp_gc2); tmp_gc2.data = gc->data; ! tmp_gc2.flags = gc->flags; ttyctx.cell = &tmp_gc2; tty_write(tty_cmd_cell, &ttyctx); } else { --- 1014,1021 ---- if (screen_check_selection(s, s->cx - width, s->cy)) { memcpy(&tmp_gc2, &s->sel.cell, sizeof tmp_gc2); tmp_gc2.data = gc->data; ! tmp_gc2.flags = gc->flags & ~(GRID_FLAG_FG256|GRID_FLAG_BG256); ! tmp_gc2.flags |= s->sel.cell.flags & (GRID_FLAG_FG256|GRID_FLAG_BG256); ttyctx.cell = &tmp_gc2; tty_write(tty_cmd_cell, &ttyctx); } else {