diff --git a/status.c b/status.c index 89912114..332f8fd6 100644 --- a/status.c +++ b/status.c @@ -320,7 +320,7 @@ status_redraw(struct client *c) struct session *s = c->session; struct screen_write_ctx ctx; struct grid_cell gc; - u_int lines, i, width = c->tty.sx; + u_int lines, i, n, width = c->tty.sx; int flags, force = 0, changed = 0; struct options_entry *o; union options_value *ov; @@ -364,15 +364,17 @@ status_redraw(struct client *c) /* Write the status lines. */ o = options_get(s->options, "status-format"); - if (o == NULL) - screen_write_clearscreen(&ctx, gc.bg); - else { + if (o == NULL) { + for (n = 0; n < width * lines; n++) + screen_write_putc(&ctx, &gc, ' '); + } else { for (i = 0; i < lines; i++) { screen_write_cursormove(&ctx, 0, i, 0); ov = options_array_get(o, i); if (ov == NULL) { - screen_write_clearline(&ctx, gc.bg); + for (n = 0; n < width; n++) + screen_write_putc(&ctx, &gc, ' '); continue; } sle = &sl->entries[i]; @@ -386,7 +388,10 @@ status_redraw(struct client *c) } changed = 1; - screen_write_clearline(&ctx, gc.bg); + for (n = 0; n < width; n++) + screen_write_putc(&ctx, &gc, ' '); + screen_write_cursormove(&ctx, 0, i, 0); + status_free_ranges(&sle->ranges); format_draw(&ctx, &gc, width, expanded, &sle->ranges);