Merge branch 'obsd-master'

This commit is contained in:
Thomas Adam 2017-05-29 02:01:15 +01:00
commit f4a42738af

48
input.c
View File

@ -110,6 +110,8 @@ static void input_set_state(struct window_pane *,
static void input_reset_cell(struct input_ctx *); static void input_reset_cell(struct input_ctx *);
static void input_osc_4(struct window_pane *, const char *); static void input_osc_4(struct window_pane *, const char *);
static void input_osc_10(struct window_pane *, const char *);
static void input_osc_11(struct window_pane *, const char *);
static void input_osc_52(struct window_pane *, const char *); static void input_osc_52(struct window_pane *, const char *);
static void input_osc_104(struct window_pane *, const char *); static void input_osc_104(struct window_pane *, const char *);
@ -1900,13 +1902,19 @@ input_exit_osc(struct input_ctx *ictx)
case 4: case 4:
input_osc_4(ictx->wp, p); input_osc_4(ictx->wp, p);
break; break;
case 52: case 10:
input_osc_52(ictx->wp, p); input_osc_10(ictx->wp, p);
break;
case 11:
input_osc_11(ictx->wp, p);
break; break;
case 12: case 12:
if (*p != '?') /* ? is colour request */ if (*p != '?') /* ? is colour request */
screen_set_cursor_colour(ictx->ctx.s, p); screen_set_cursor_colour(ictx->ctx.s, p);
break; break;
case 52:
input_osc_52(ictx->wp, p);
break;
case 104: case 104:
input_osc_104(ictx->wp, p); input_osc_104(ictx->wp, p);
break; break;
@ -2052,6 +2060,42 @@ bad:
free(copy); free(copy);
} }
/* Handle the OSC 10 sequence for setting background colour. */
static void
input_osc_10(struct window_pane *wp, const char *p)
{
u_int r, g, b;
if (sscanf(p, "rgb:%2x/%2x/%2x", &r, &g, &b) != 3)
goto bad;
wp->colgc.fg = colour_join_rgb(r, g, b);
wp->flags |= PANE_REDRAW;
return;
bad:
log_debug("bad OSC 10: %s", p);
}
/* Handle the OSC 11 sequence for setting background colour. */
static void
input_osc_11(struct window_pane *wp, const char *p)
{
u_int r, g, b;
if (sscanf(p, "rgb:%2x/%2x/%2x", &r, &g, &b) != 3)
goto bad;
wp->colgc.bg = colour_join_rgb(r, g, b);
wp->flags |= PANE_REDRAW;
return;
bad:
log_debug("bad OSC 11: %s", p);
}
/* Handle the OSC 52 sequence for setting the clipboard. */ /* Handle the OSC 52 sequence for setting the clipboard. */
static void static void
input_osc_52(struct window_pane *wp, const char *p) input_osc_52(struct window_pane *wp, const char *p)