diff options
| -rw-r--r-- | src/nvim/version.c | 2 | ||||
| -rw-r--r-- | src/nvim/window.c | 13 | 
2 files changed, 10 insertions, 5 deletions
diff --git a/src/nvim/version.c b/src/nvim/version.c index b32da8937e..c93fc5083c 100644 --- a/src/nvim/version.c +++ b/src/nvim/version.c @@ -227,7 +227,7 @@ static int included_patches[] = {    371,    370,    //369, -  //368, +  368,    367,    //366,    //365, diff --git a/src/nvim/window.c b/src/nvim/window.c index b9714ce690..dccf3e2efc 100644 --- a/src/nvim/window.c +++ b/src/nvim/window.c @@ -3800,10 +3800,15 @@ void win_size_save(garray_T *gap)  void win_size_restore(garray_T *gap)  {    if (win_count() * 2 == gap->ga_len) { -    int i = 0; -    FOR_ALL_WINDOWS(wp) { -      frame_setwidth(wp->w_frame, ((int *)gap->ga_data)[i++]); -      win_setheight_win(((int *)gap->ga_data)[i++], wp); +    /* The order matters, because frames contain other frames, but it's +     * difficult to get right. The easy way out is to do it twice. */ +    for (int j = 0; j < 2; ++j) +    { +      int i = 0; +      FOR_ALL_WINDOWS(wp) { +        frame_setwidth(wp->w_frame, ((int *)gap->ga_data)[i++]); +        win_setheight_win(((int *)gap->ga_data)[i++], wp); +      }      }      /* recompute the window positions */      (void)win_comp_pos();  | 
