aboutsummaryrefslogtreecommitdiff
path: root/status.c
diff options
context:
space:
mode:
Diffstat (limited to 'status.c')
-rw-r--r--status.c26
1 files changed, 10 insertions, 16 deletions
diff --git a/status.c b/status.c
index 51c9c64f..e1fede15 100644
--- a/status.c
+++ b/status.c
@@ -690,7 +690,7 @@ status_prompt_redraw(struct client *c)
struct screen_write_ctx ctx;
struct session *s = c->session;
struct screen old_status;
- size_t i, size, left, len, off, n;
+ size_t i, size, left, len, off;
char ch;
struct grid_cell gc;
@@ -724,13 +724,9 @@ status_prompt_redraw(struct client *c)
left--;
size = left;
}
- if (c->prompt_flags & PROMPT_HIDDEN) {
- n = strlen(c->prompt_buffer);
- if (n > left)
- n = left;
- for (i = 0; i < n; i++)
- screen_write_putc(&ctx, &gc, '*');
- } else {
+ if (c->prompt_flags & PROMPT_HIDDEN)
+ size = 0;
+ else {
screen_write_puts(&ctx, &gc,
"%.*s", (int) left, c->prompt_buffer + off);
}
@@ -739,17 +735,15 @@ status_prompt_redraw(struct client *c)
screen_write_putc(&ctx, &gc, ' ');
/* Draw a fake cursor. */
- screen_write_cursormove(&ctx, len + c->prompt_index - off, 0);
- if (c->prompt_index == strlen(c->prompt_buffer))
- ch = ' ';
+ ch = ' ';
+ if (c->prompt_flags & PROMPT_HIDDEN)
+ screen_write_cursormove(&ctx, len, 0);
else {
- if (c->prompt_flags & PROMPT_HIDDEN)
- ch = '*';
- else
+ screen_write_cursormove(&ctx,
+ len + c->prompt_index - off, 0);
+ if (c->prompt_index < strlen(c->prompt_buffer))
ch = c->prompt_buffer[c->prompt_index];
}
- if (ch == '\0')
- ch = ' ';
gc.attr ^= GRID_ATTR_REVERSE;
screen_write_putc(&ctx, &gc, ch);
}