summaryrefslogtreecommitdiffstats
path: root/usr.bin/tmux/screen-write.c
diff options
context:
space:
mode:
authornicm <nicm@openbsd.org>2012-12-08 17:05:57 +0000
committernicm <nicm@openbsd.org>2012-12-08 17:05:57 +0000
commit47f4a03fb8352cdc18d3fb3729bcc2a328c6519f (patch)
treeb6274da53c5e67b37671f362c4c0c16797f01790 /usr.bin/tmux/screen-write.c
parentWork-in-progress gcc 3.3.6 configuration for OpenBSD/vax. (diff)
downloadwireguard-openbsd-47f4a03fb8352cdc18d3fb3729bcc2a328c6519f.tar.xz
wireguard-openbsd-47f4a03fb8352cdc18d3fb3729bcc2a328c6519f.zip
Handle resetting 256-colours properly when parsing #[default],
#[fg=default] and #[bg=default] styles.
Diffstat (limited to 'usr.bin/tmux/screen-write.c')
-rw-r--r--usr.bin/tmux/screen-write.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/usr.bin/tmux/screen-write.c b/usr.bin/tmux/screen-write.c
index af6f85e9742..0919e01253c 100644
--- a/usr.bin/tmux/screen-write.c
+++ b/usr.bin/tmux/screen-write.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: screen-write.c,v 1.57 2012/09/24 12:53:55 nicm Exp $ */
+/* $OpenBSD: screen-write.c,v 1.58 2012/12/08 17:05:57 nicm Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
@@ -324,6 +324,9 @@ screen_write_parsestyle(
fg = defgc->fg;
bg = defgc->bg;
attr = defgc->attr;
+ flags &= ~(GRID_FLAG_FG256|GRID_FLAG_BG256);
+ flags |=
+ defgc->flags & (GRID_FLAG_FG256|GRID_FLAG_BG256);
} else if (end > 3 && strncasecmp(tmp + 1, "g=", 2) == 0) {
if ((val = colour_fromstring(tmp + 3)) == -1)
return;
@@ -335,8 +338,11 @@ screen_write_parsestyle(
} else
flags &= ~GRID_FLAG_FG256;
fg = val;
- } else
+ } else {
fg = defgc->fg;
+ flags &= ~GRID_FLAG_FG256;
+ flags |= defgc->flags & GRID_FLAG_FG256;
+ }
} else if (*in == 'b' || *in == 'B') {
if (val != 8) {
if (val & 0x100) {
@@ -345,8 +351,11 @@ screen_write_parsestyle(
} else
flags &= ~GRID_FLAG_BG256;
bg = val;
- } else
+ } else {
bg = defgc->bg;
+ flags &= ~GRID_FLAG_BG256;
+ flags |= defgc->flags & GRID_FLAG_BG256;
+ }
} else
return;
} else if (end > 2 && strncasecmp(tmp, "no", 2) == 0) {