vim-patch:7.4.368

Problem:    Restoring the window sizes after closing the command line window
            doesn't work properly if there are nested splits.
Solution:   Restore the sizes twice. (Hirohito Higashi)

https://code.google.com/p/vim/source/detail?r=v7-4-368
This commit is contained in:
Shougo Matsushita 2014-09-16 19:23:11 +09:00
parent 3b7b79e37d
commit f5320f645b
2 changed files with 10 additions and 5 deletions

View File

@ -227,7 +227,7 @@ static int included_patches[] = {
371, 371,
370, 370,
//369, //369,
//368, 368,
367, 367,
//366, //366,
//365, //365,

View File

@ -3800,10 +3800,15 @@ void win_size_save(garray_T *gap)
void win_size_restore(garray_T *gap) void win_size_restore(garray_T *gap)
{ {
if (win_count() * 2 == gap->ga_len) { if (win_count() * 2 == gap->ga_len) {
int i = 0; /* The order matters, because frames contain other frames, but it's
FOR_ALL_WINDOWS(wp) { * difficult to get right. The easy way out is to do it twice. */
frame_setwidth(wp->w_frame, ((int *)gap->ga_data)[i++]); for (int j = 0; j < 2; ++j)
win_setheight_win(((int *)gap->ga_data)[i++], wp); {
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 */ /* recompute the window positions */
(void)win_comp_pos(); (void)win_comp_pos();