diff options
author | nicm <nicm> | 2019-03-16 17:53:55 +0000 |
---|---|---|
committer | nicm <nicm> | 2019-03-16 17:53:55 +0000 |
commit | 818fda03638e5001209886ddcd12b401c23dffae (patch) | |
tree | 27079b0073ee0b7c3c1ad07762bec2735608d99b /status.c | |
parent | b4f5b99e4b3c6b266e53c6c4ff748320a197011d (diff) | |
download | rtmux-818fda03638e5001209886ddcd12b401c23dffae.tar.gz rtmux-818fda03638e5001209886ddcd12b401c23dffae.tar.bz2 rtmux-818fda03638e5001209886ddcd12b401c23dffae.zip |
Give status_save_old the client so it can do the reinit too.
Diffstat (limited to 'status.c')
-rw-r--r-- | status.c | 19 |
1 files changed, 10 insertions, 9 deletions
@@ -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); |