summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornicm <nicm>2019-03-16 17:53:55 +0000
committernicm <nicm>2019-03-16 17:53:55 +0000
commit818fda03638e5001209886ddcd12b401c23dffae (patch)
tree27079b0073ee0b7c3c1ad07762bec2735608d99b
parentb4f5b99e4b3c6b266e53c6c4ff748320a197011d (diff)
Give status_save_old the client so it can do the reinit too.
-rw-r--r--status.c19
1 files changed, 10 insertions, 9 deletions
diff --git a/status.c b/status.c
index 3065415d..fc9fbe3f 100644
--- a/status.c
+++ b/status.c
@@ -323,18 +323,23 @@ status_free(struct client *c)
/* Save as old status line. */
static void
-status_save_old(struct status_line *sl)
+status_save_old(struct client *c)
{
+ struct status_line *sl = &c->status;
+
if (sl->old_screen == NULL) {
sl->old_screen = xmalloc(sizeof *sl->old_screen);
memcpy(sl->old_screen, &sl->screen, sizeof *sl->old_screen);
+ screen_init(&c->status.screen, c->tty.sx, 1, 0);
}
}
/* Free old status line. */
static void
-status_free_old(struct status_line *sl)
+status_free_old(struct client *c)
{
+ struct status_line *sl = &c->status;
+
if (sl->old_screen != NULL) {
screen_free(sl->old_screen);
free(sl->old_screen);
@@ -361,7 +366,7 @@ status_redraw(struct client *c)
int larrow, rarrow;
/* Delete the saved status line, if any. */
- status_free_old(sl);
+ status_free_old(c);
/* No status line? */
lines = status_line_size(c);
@@ -629,9 +634,7 @@ status_message_set(struct client *c, const char *fmt, ...)
int delay;
status_message_clear(c);
-
- status_save_old(&c->status);
- screen_init(&c->status.screen, c->tty.sx, 1, 0);
+ status_save_old(c);
va_start(ap, fmt);
xvasprintf(&c->message_string, fmt, ap);
@@ -744,9 +747,7 @@ status_prompt_set(struct client *c, const char *msg, const char *input,
status_message_clear(c);
status_prompt_clear(c);
-
- status_save_old(&c->status);
- screen_init(&c->status.screen, c->tty.sx, 1, 0);
+ status_save_old(c);
c->prompt_string = format_expand_time(ft, msg);