aboutsummaryrefslogtreecommitdiff
path: root/status.c
diff options
context:
space:
mode:
authorTiago Cunha <tcunha@gmx.com>2009-08-09 17:40:17 +0000
committerTiago Cunha <tcunha@gmx.com>2009-08-09 17:40:17 +0000
commit167a8c9edc2f3faf0613b0aa6a2b3bc92ebdf814 (patch)
treeb98ad5512844b4b79336cae73ad61a4cdb61c193 /status.c
parent97eb537f38f732f86a046e6fee9116c55c1ff706 (diff)
downloadrtmux-167a8c9edc2f3faf0613b0aa6a2b3bc92ebdf814.tar.gz
rtmux-167a8c9edc2f3faf0613b0aa6a2b3bc92ebdf814.tar.bz2
rtmux-167a8c9edc2f3faf0613b0aa6a2b3bc92ebdf814.zip
Sync OpenBSD patchset 229:
Options to set the colours and attributes for status-left/-right. From Thomas Adam, thanks.
Diffstat (limited to 'status.c')
-rw-r--r--status.c36
1 files changed, 32 insertions, 4 deletions
diff --git a/status.c b/status.c
index 16d23765..850c513a 100644
--- a/status.c
+++ b/status.c
@@ -1,4 +1,4 @@
-/* $Id: status.c,v 1.108 2009-08-09 16:50:57 tcunha Exp $ */
+/* $Id: status.c,v 1.109 2009-08-09 17:40:17 tcunha Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
@@ -47,8 +47,10 @@ status_redraw(struct client *c)
char *left, *right, *text, *ptr;
size_t llen, llen2, rlen, rlen2, offset;
size_t ox, xx, yy, size, start, width;
- struct grid_cell stdgc, gc;
+ struct grid_cell stdgc, sl_stdgc, sr_stdgc, gc;
int larrow, rarrow, utf8flag;
+ int sl_fg, sl_bg, sr_fg, sr_bg;
+ int sl_attr, sr_attr;
left = right = NULL;
@@ -68,6 +70,32 @@ status_redraw(struct client *c)
stdgc.bg = options_get_number(&s->options, "status-bg");
stdgc.attr |= options_get_number(&s->options, "status-attr");
+ /*
+ * Set the status-left and status-right parts to the default status
+ * line options and only change them where they differ from the
+ * defaults.
+ */
+ memcpy(&sl_stdgc, &stdgc, sizeof sl_stdgc);
+ memcpy(&sr_stdgc, &stdgc, sizeof sr_stdgc);
+ sl_fg = options_get_number(&s->options, "status-left-fg");
+ if (sl_fg != 8)
+ sl_stdgc.fg = sl_fg;
+ sl_bg = options_get_number(&s->options, "status-left-bg");
+ if (sl_bg != 8)
+ sl_stdgc.bg = sl_bg;
+ sl_attr = options_get_number(&s->options, "status-left-attr");
+ if (sl_attr != 0)
+ sl_stdgc.attr = sl_attr;
+ sr_fg = options_get_number(&s->options, "status-right-fg");
+ if (sr_fg != 8)
+ sr_stdgc.fg = sr_fg;
+ sr_bg = options_get_number(&s->options, "status-right-bg");
+ if (sr_bg != 8)
+ sr_stdgc.bg = sr_bg;
+ sr_attr = options_get_number(&s->options, "status-right-attr");
+ if (sr_attr != 0)
+ sr_stdgc.attr = sr_attr;
+
yy = c->tty.sy - 1;
if (yy == 0)
goto blank;
@@ -164,7 +192,7 @@ draw:
screen_write_start(&ctx, NULL, &c->status);
if (llen != 0) {
screen_write_cursormove(&ctx, 0, yy);
- screen_write_nputs(&ctx, llen, &stdgc, utf8flag, "%s", left);
+ screen_write_nputs(&ctx, llen, &sl_stdgc, utf8flag, "%s", left);
screen_write_putc(&ctx, &stdgc, ' ');
if (larrow)
screen_write_putc(&ctx, &stdgc, ' ');
@@ -238,7 +266,7 @@ draw:
if (rlen != 0) {
screen_write_cursormove(&ctx, c->tty.sx - rlen - 1, yy);
screen_write_putc(&ctx, &stdgc, ' ');
- screen_write_nputs(&ctx, rlen, &stdgc, utf8flag, "%s", right);
+ screen_write_nputs(&ctx, rlen, &sr_stdgc, utf8flag, "%s", right);
}
/* Draw the arrows. */