version 1.82, 2020/12/07 09:46:58 |
version 1.83, 2021/02/05 12:29:18 |
|
|
struct screen_redraw_ctx *); |
struct screen_redraw_ctx *); |
|
|
#define CELL_INSIDE 0 |
#define CELL_INSIDE 0 |
#define CELL_LEFTRIGHT 1 |
#define CELL_TOPBOTTOM 1 |
#define CELL_TOPBOTTOM 2 |
#define CELL_LEFTRIGHT 2 |
#define CELL_TOPLEFT 3 |
#define CELL_TOPLEFT 3 |
#define CELL_TOPRIGHT 4 |
#define CELL_TOPRIGHT 4 |
#define CELL_BOTTOMLEFT 5 |
#define CELL_BOTTOMLEFT 5 |
|
|
|
|
#define CELL_BORDERS " xqlkmjwvtun~" |
#define CELL_BORDERS " xqlkmjwvtun~" |
|
|
|
#define START_ISOLATE "\342\201\246" |
|
#define END_ISOLATE "\342\201\251" |
|
|
static const struct utf8_data screen_redraw_double_borders[] = { |
static const struct utf8_data screen_redraw_double_borders[] = { |
{ "", 0, 0, 0 }, |
{ "", 0, 0, 0 }, |
{ "\342\225\221", 0, 3, 1 }, /* U+2551 */ |
{ "\342\225\221", 0, 3, 1 }, /* U+2551 */ |
|
|
case 13: /* 1101, left right bottom */ |
case 13: /* 1101, left right bottom */ |
return (CELL_TOPJOIN); |
return (CELL_TOPJOIN); |
case 12: /* 1100, left right */ |
case 12: /* 1100, left right */ |
return (CELL_TOPBOTTOM); |
return (CELL_LEFTRIGHT); |
case 11: /* 1011, left top bottom */ |
case 11: /* 1011, left top bottom */ |
return (CELL_RIGHTJOIN); |
return (CELL_RIGHTJOIN); |
case 10: /* 1010, left top */ |
case 10: /* 1010, left top */ |
|
|
case 5: /* 0101, right bottom */ |
case 5: /* 0101, right bottom */ |
return (CELL_TOPLEFT); |
return (CELL_TOPLEFT); |
case 3: /* 0011, top bottom */ |
case 3: /* 0011, top bottom */ |
return (CELL_LEFTRIGHT); |
return (CELL_TOPBOTTOM); |
} |
} |
return (CELL_OUTSIDE); |
return (CELL_OUTSIDE); |
} |
} |
|
|
struct tty *tty = &c->tty; |
struct tty *tty = &c->tty; |
struct window_pane *wp; |
struct window_pane *wp; |
u_int cell_type, x = ctx->ox + i, y = ctx->oy + j; |
u_int cell_type, x = ctx->ox + i, y = ctx->oy + j; |
int pane_status = ctx->pane_status; |
int pane_status = ctx->pane_status, isolates; |
struct grid_cell gc; |
struct grid_cell gc; |
const struct grid_cell *tmp; |
const struct grid_cell *tmp; |
|
|
|
|
} |
} |
screen_redraw_border_set(wp, ctx->pane_lines, cell_type, &gc); |
screen_redraw_border_set(wp, ctx->pane_lines, cell_type, &gc); |
|
|
|
if (cell_type == CELL_TOPBOTTOM && |
|
(c->flags & CLIENT_UTF8) && |
|
tty_term_has(tty->term, TTYC_BIDI)) |
|
isolates = 1; |
|
else |
|
isolates = 0; |
|
|
if (ctx->statustop) |
if (ctx->statustop) |
tty_cursor(tty, i, ctx->statuslines + j); |
tty_cursor(tty, i, ctx->statuslines + j); |
else |
else |
tty_cursor(tty, i, j); |
tty_cursor(tty, i, j); |
|
if (isolates) |
|
tty_puts(tty, END_ISOLATE); |
tty_cell(tty, &gc, &grid_default_cell, NULL); |
tty_cell(tty, &gc, &grid_default_cell, NULL); |
|
if (isolates) |
|
tty_puts(tty, START_ISOLATE); |
} |
} |
|
|
/* Draw the borders. */ |
/* Draw the borders. */ |