mirror of
https://github.com/tmux/tmux.git
synced 2024-12-13 18:38:48 +00:00
Status line fixes: don't truncate status-right now the length calculation is
done for UTF-8, limit to the maximum length correctly when printing, and always print a space even if the left string is longer than the width available.
This commit is contained in:
parent
c506e7f711
commit
1ec736a3dc
@ -164,7 +164,7 @@ screen_write_vnputs(struct screen_write_ctx *ctx, ssize_t maxlen,
|
||||
gc->flags &= ~GRID_FLAG_UTF8;
|
||||
|
||||
} else {
|
||||
if (maxlen > 0 && size > (size_t) maxlen)
|
||||
if (maxlen > 0 && size + 1 > (size_t) maxlen)
|
||||
break;
|
||||
|
||||
size++;
|
||||
|
9
status.c
9
status.c
@ -91,7 +91,6 @@ status_redraw(struct client *c)
|
||||
rlen2 = screen_write_strlen(utf8flag, "%s", right);
|
||||
if (rlen2 < rlen)
|
||||
rlen = rlen2;
|
||||
right[rlen] = '\0';
|
||||
|
||||
/*
|
||||
* Figure out how much space we have for the window list. If there isn't
|
||||
@ -167,8 +166,8 @@ draw:
|
||||
screen_write_start(&ctx, NULL, &c->status);
|
||||
if (llen != 0) {
|
||||
screen_write_cursormove(&ctx, 0, yy);
|
||||
screen_write_nputs(
|
||||
&ctx, llen + 1, &stdgc, utf8flag, "%s ", left);
|
||||
screen_write_nputs(&ctx, llen, &stdgc, utf8flag, "%s", left);
|
||||
screen_write_putc(&ctx, &stdgc, ' ');
|
||||
if (larrow)
|
||||
screen_write_putc(&ctx, &stdgc, ' ');
|
||||
} else {
|
||||
@ -225,8 +224,8 @@ draw:
|
||||
/* Draw the last item. */
|
||||
if (rlen != 0) {
|
||||
screen_write_cursormove(&ctx, c->tty.sx - rlen - 1, yy);
|
||||
screen_write_nputs(
|
||||
&ctx, rlen + 1, &stdgc, utf8flag, " %s", right);
|
||||
screen_write_putc(&ctx, &stdgc, ' ');
|
||||
screen_write_nputs(&ctx, rlen, &stdgc, utf8flag, "%s", right);
|
||||
}
|
||||
|
||||
/* Draw the arrows. */
|
||||
|
Loading…
Reference in New Issue
Block a user