mirror of
https://github.com/tmux/tmux.git
synced 2026-06-20 17:25:57 +00:00
Merge branch 'obsd-master'
This commit is contained in:
18
tty-draw.c
18
tty-draw.c
@@ -78,7 +78,7 @@ tty_draw_line_clear(struct tty *tty, u_int px, u_int py, u_int nx,
|
||||
}
|
||||
}
|
||||
|
||||
/* Couldn't use an escape sequence, use spaces. */
|
||||
/* Couldn't use an escape sequence, use spaces. */
|
||||
if (px != 0 || !wrapped)
|
||||
tty_cursor(tty, px, py);
|
||||
if (nx == 1)
|
||||
@@ -105,13 +105,14 @@ tty_draw_line(struct tty *tty, struct screen *s, u_int px, u_int py, u_int nx,
|
||||
size_t len;
|
||||
enum tty_draw_line_state current_state, next_state;
|
||||
struct tty_style_ctx default_style_ctx = { 0 };
|
||||
|
||||
const struct grid_cell *defaults;
|
||||
|
||||
if (style_ctx == NULL) {
|
||||
default_style_ctx.defaults = &grid_default_cell;
|
||||
default_style_ctx.hyperlinks = s->hyperlinks;
|
||||
style_ctx = &default_style_ctx;
|
||||
}
|
||||
defaults = style_ctx->defaults;
|
||||
|
||||
/*
|
||||
* py is the line in the screen to draw. px is the start x and nx is
|
||||
@@ -138,8 +139,8 @@ tty_draw_line(struct tty *tty, struct screen *s, u_int px, u_int py, u_int nx,
|
||||
else
|
||||
ex = screen_size_x(s);
|
||||
log_debug("%s: drawing %u-%u,%u (end %u) at %u,%u; defaults: fg=%d, "
|
||||
"bg=%d", __func__, px, px + nx, py, ex, atx, aty,
|
||||
style_ctx->defaults->fg, style_ctx->defaults->bg);
|
||||
"bg=%d", __func__, px, px + nx, py, ex, atx, aty, defaults->fg,
|
||||
defaults->bg);
|
||||
|
||||
/* Turn off cursor while redrawing and reset region and margins. */
|
||||
flags = (tty->flags & TTY_NOCURSOR);
|
||||
@@ -150,7 +151,7 @@ tty_draw_line(struct tty *tty, struct screen *s, u_int px, u_int py, u_int nx,
|
||||
|
||||
/* Start with the default cell as the last cell. */
|
||||
memcpy(&last, &grid_default_cell, sizeof last);
|
||||
last.bg = style_ctx->defaults->bg;
|
||||
last.bg = defaults->bg;
|
||||
tty_default_attributes(tty, 8, style_ctx);
|
||||
|
||||
/*
|
||||
@@ -172,7 +173,7 @@ tty_draw_line(struct tty *tty, struct screen *s, u_int px, u_int py, u_int nx,
|
||||
break;
|
||||
}
|
||||
if (i == 0)
|
||||
bg = style_ctx->defaults->bg;
|
||||
bg = defaults->bg;
|
||||
else {
|
||||
bg = gc.bg;
|
||||
if (gc.flags & GRID_FLAG_SELECTED) {
|
||||
@@ -183,7 +184,7 @@ tty_draw_line(struct tty *tty, struct screen *s, u_int px, u_int py, u_int nx,
|
||||
}
|
||||
tty_attributes(tty, &last, style_ctx);
|
||||
log_debug("%s: clearing %u padding cells", __func__, cx);
|
||||
tty_draw_line_clear(tty, atx, aty, cx, style_ctx->defaults, bg, 0);
|
||||
tty_draw_line_clear(tty, atx, aty, cx, defaults, bg, 0);
|
||||
if (cx == ex)
|
||||
goto out;
|
||||
atx += cx;
|
||||
@@ -284,8 +285,7 @@ tty_draw_line(struct tty *tty, struct screen *s, u_int px, u_int py, u_int nx,
|
||||
if (current_state == TTY_DRAW_LINE_EMPTY) {
|
||||
tty_attributes(tty, &last, style_ctx);
|
||||
tty_draw_line_clear(tty, atx + last_i, aty,
|
||||
i - last_i, style_ctx->defaults, last.bg,
|
||||
wrapped);
|
||||
i - last_i, defaults, last.bg, wrapped);
|
||||
wrapped = 0;
|
||||
} else if (next_state != TTY_DRAW_LINE_SAME &&
|
||||
len != 0) {
|
||||
|
||||
Reference in New Issue
Block a user