diff --git a/format.c b/format.c index 2be9834f..7ded05d2 100644 --- a/format.c +++ b/format.c @@ -577,7 +577,10 @@ format_defaults_window(struct format_tree *ft, struct window *w) ft->w = w; - layout = layout_dump(w); + if (w->saved_layout_root != NULL) + layout = layout_dump(w->saved_layout_root); + else + layout = layout_dump(w->layout_root); format_add(ft, "window_id", "@%u", w->id); format_add(ft, "window_name", "%s", w->name); diff --git a/layout-custom.c b/layout-custom.c index c9cf49c2..57503518 100644 --- a/layout-custom.c +++ b/layout-custom.c @@ -55,12 +55,12 @@ layout_checksum(const char *layout) /* Dump layout as a string. */ char * -layout_dump(struct window *w) +layout_dump(struct layout_cell *root) { char layout[BUFSIZ], *out; *layout = '\0'; - if (layout_append(w->layout_root, layout, sizeof layout) != 0) + if (layout_append(root, layout, sizeof layout) != 0) return (NULL); xasprintf(&out, "%04x,%s", layout_checksum(layout), layout); diff --git a/tmux.h b/tmux.h index 1af4d073..53fd9b28 100644 --- a/tmux.h +++ b/tmux.h @@ -2225,7 +2225,7 @@ struct layout_cell *layout_split_pane( void layout_close_pane(struct window_pane *); /* layout-custom.c */ -char *layout_dump(struct window *); +char *layout_dump(struct layout_cell *); int layout_parse(struct window *, const char *); /* layout-set.c */ diff --git a/window.c b/window.c index 86cc8bb0..3c8d4955 100644 --- a/window.c +++ b/window.c @@ -519,6 +519,7 @@ window_unzoom(struct window *w) w->flags &= ~WINDOW_ZOOMED; layout_free(w); w->layout_root = w->saved_layout_root; + w->saved_layout_root = NULL; TAILQ_FOREACH(wp, &w->panes, entry) { wp->layout_cell = wp->saved_layout_cell;