diff options
author | Nicholas Marriott <nicholas.marriott@gmail.com> | 2009-06-26 15:34:12 +0000 |
---|---|---|
committer | Nicholas Marriott <nicholas.marriott@gmail.com> | 2009-06-26 15:34:12 +0000 |
commit | de2ea2d1786628172b4c5a19ee7c57246c95be3a (patch) | |
tree | a41b478e7b4842152f53e76dafe850bfe33fc5b3 | |
parent | 3fcbe1e27bc8656742671733f987904818ca23d2 (diff) | |
download | rtmux-de2ea2d1786628172b4c5a19ee7c57246c95be3a.tar.gz rtmux-de2ea2d1786628172b4c5a19ee7c57246c95be3a.tar.bz2 rtmux-de2ea2d1786628172b4c5a19ee7c57246c95be3a.zip |
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.
-rw-r--r-- | client.c | 2 | ||||
-rw-r--r-- | screen-write.c | 2 | ||||
-rw-r--r-- | server.c | 2 | ||||
-rw-r--r-- | status.c | 11 |
4 files changed, 8 insertions, 9 deletions
@@ -1,4 +1,4 @@ -/* $OpenBSD: client.c,v 1.3 2009/06/25 22:09:20 nicm Exp $ */ +/* $Id $ */ /* * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net> diff --git a/screen-write.c b/screen-write.c index 2bbfb296..73e3fb2d 100644 --- a/screen-write.c +++ b/screen-write.c @@ -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++; @@ -1,4 +1,4 @@ -/* $OpenBSD: server.c,v 1.4 2009/06/25 22:09:20 nicm Exp $ */ +/* $Id $ */ /* * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net> @@ -1,4 +1,4 @@ -/* $Id: status.c,v 1.88 2009-06-25 16:34:50 nicm Exp $ */ +/* $Id $ */ /* * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net> @@ -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. */ |