aboutsummaryrefslogtreecommitdiff
path: root/input.c
diff options
context:
space:
mode:
authorNicholas Marriott <nicholas.marriott@gmail.com>2019-07-29 10:51:30 +0100
committerNicholas Marriott <nicholas.marriott@gmail.com>2019-07-29 10:51:30 +0100
commitda552eb73b80bab3c0a28dfb9ae2c75fa6d4bdaf (patch)
treecf9c86c3218659faf46e606a1e38bc6ebb570dcd /input.c
parent5a501a8ae27c2d0128870caa48c5708e97528567 (diff)
parentb90a9fcd13f4434aed0fe1785d619aa668bbc77d (diff)
downloadrtmux-da552eb73b80bab3c0a28dfb9ae2c75fa6d4bdaf.tar.gz
rtmux-da552eb73b80bab3c0a28dfb9ae2c75fa6d4bdaf.tar.bz2
rtmux-da552eb73b80bab3c0a28dfb9ae2c75fa6d4bdaf.zip
Merge branch 'master' into 3.0-rc
Diffstat (limited to 'input.c')
-rw-r--r--input.c29
1 files changed, 20 insertions, 9 deletions
diff --git a/input.c b/input.c
index e54b5ac0..ff8d7a17 100644
--- a/input.c
+++ b/input.c
@@ -1829,6 +1829,8 @@ input_csi_dispatch_sgr_256_do(struct input_ctx *ictx, int fgbg, int c)
gc->fg = c | COLOUR_FLAG_256;
else if (fgbg == 48)
gc->bg = c | COLOUR_FLAG_256;
+ else if (fgbg == 58)
+ gc->us = c | COLOUR_FLAG_256;
}
return (1);
}
@@ -1862,6 +1864,8 @@ input_csi_dispatch_sgr_rgb_do(struct input_ctx *ictx, int fgbg, int r, int g,
gc->fg = colour_join_rgb(r, g, b);
else if (fgbg == 48)
gc->bg = colour_join_rgb(r, g, b);
+ else if (fgbg == 58)
+ gc->us = colour_join_rgb(r, g, b);
return (1);
}
@@ -1938,7 +1942,7 @@ input_csi_dispatch_sgr_colon(struct input_ctx *ictx, u_int i)
}
return;
}
- if (n < 2 || (p[0] != 38 && p[0] != 48))
+ if (n < 2 || (p[0] != 38 && p[0] != 48 && p[0] != 58))
return;
switch (p[1]) {
case 2:
@@ -1983,7 +1987,7 @@ input_csi_dispatch_sgr(struct input_ctx *ictx)
if (n == -1)
continue;
- if (n == 38 || n == 48) {
+ if (n == 38 || n == 48 || n == 58) {
i++;
switch (input_get(ictx, i, 0, -1)) {
case 2:
@@ -2078,6 +2082,9 @@ input_csi_dispatch_sgr(struct input_ctx *ictx)
case 55:
gc->attr &= ~GRID_ATTR_OVERLINE;
break;
+ case 59:
+ gc->us = 0;
+ break;
case 90:
case 91:
case 92:
@@ -2259,7 +2266,7 @@ input_exit_rename(struct input_ctx *ictx)
{
if (ictx->flags & INPUT_DISCARD)
return;
- if (!options_get_number(ictx->wp->window->options, "allow-rename"))
+ if (!options_get_number(ictx->wp->options, "allow-rename"))
return;
log_debug("%s: \"%s\"", __func__, ictx->input_buf);
@@ -2347,12 +2354,14 @@ input_osc_10(struct input_ctx *ictx, const char *p)
{
struct window_pane *wp = ictx->wp;
u_int r, g, b;
+ char tmp[16];
if (sscanf(p, "rgb:%2x/%2x/%2x", &r, &g, &b) != 3)
goto bad;
-
- wp->style.gc.fg = colour_join_rgb(r, g, b);
- wp->flags |= PANE_REDRAW;
+ xsnprintf(tmp, sizeof tmp, "fg=#%02x%02x%02x", r, g, b);
+ options_set_style(wp->options, "window-style", 1, tmp);
+ options_set_style(wp->options, "window-active-style", 1, tmp);
+ wp->flags |= (PANE_REDRAW|PANE_STYLECHANGED);
return;
@@ -2366,12 +2375,14 @@ input_osc_11(struct input_ctx *ictx, const char *p)
{
struct window_pane *wp = ictx->wp;
u_int r, g, b;
+ char tmp[16];
if (sscanf(p, "rgb:%2x/%2x/%2x", &r, &g, &b) != 3)
goto bad;
-
- wp->style.gc.bg = colour_join_rgb(r, g, b);
- wp->flags |= PANE_REDRAW;
+ xsnprintf(tmp, sizeof tmp, "bg=#%02x%02x%02x", r, g, b);
+ options_set_style(wp->options, "window-style", 1, tmp);
+ options_set_style(wp->options, "window-active-style", 1, tmp);
+ wp->flags |= (PANE_REDRAW|PANE_STYLECHANGED);
return;