From b292f71c49b4222b34684aee44029ca2d6aeb4dd Mon Sep 17 00:00:00 2001 From: Nicholas Marriott Date: Mon, 20 Jul 2009 14:32:09 +0000 Subject: Add a status-justify option to allow the window list in the status line to be positioned at the left, centre, or right. --- status.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'status.c') diff --git a/status.c b/status.c index 61f5e22c..b4cbc6b1 100644 --- a/status.c +++ b/status.c @@ -46,7 +46,7 @@ status_redraw(struct client *c) struct screen old_status; char *left, *right, *text, *ptr; size_t llen, llen2, rlen, rlen2, offset; - size_t xx, yy, size, start, width; + size_t ox, xx, yy, size, start, width; struct grid_cell stdgc, gc; int larrow, rarrow, utf8flag; @@ -175,6 +175,21 @@ draw: screen_write_cursormove(&ctx, 0, yy); } + ox = 0; + if (width < xx) { + switch (options_get_number(&s->options, "status-justify")) { + case 1: /* centered */ + ox = 1 + (xx - width) / 2; + break; + case 2: /* right */ + ox = 1 + (xx - width); + break; + } + xx -= ox; + while (ox-- > 0) + screen_write_putc(&ctx, &stdgc, ' '); + } + /* Draw each character in succession. */ offset = 0; RB_FOREACH(wl, winlinks, &s->windows) { -- cgit