Hi Bram and Vim developer,
How to reproduce:
- run vim
$ vim -N -u NONE
- open quickfix window and vsp and sp on top window.
:copen|wincmd k|vsp|sp
- open command-line window and close this.
q:<CR>
Expected behavior:
- Restore all window size before open command-line window.
Actual behavior:
- Top left window height is not restored.
Investigation result:
It is not going to see only up to the parent frame of the local frame in order
to expand the height of window in the process to be restored in
win_size_restore()
I think that it may be processed in descending order of height window perhaps.
However, the same problem can occur even for window width.
I think a good solution to carry out twice the restore process.
Attach a patch. please check and include this.
Thank you.
--
Best regards,
Hirohito Higashi
--
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
---
You received this message because you are subscribed to the Google Groups
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.
diff -r 0efec12f52ac src/window.c
--- a/src/window.c Thu Jul 10 22:01:47 2014 +0200
+++ b/src/window.c Tue Jul 15 00:45:21 2014 +0900
@@ -4836,15 +4836,18 @@
garray_T *gap;
{
win_T *wp;
- int i;
+ int i, j;
if (win_count() * 2 == gap->ga_len)
{
- i = 0;
- for (wp = firstwin; wp != NULL; wp = wp->w_next)
+ for (j = 0; j < 2; ++j)
{
- frame_setwidth(wp->w_frame, ((int *)gap->ga_data)[i++]);
- win_setheight_win(((int *)gap->ga_data)[i++], wp);
+ i = 0;
+ for (wp = firstwin; wp != NULL; wp = wp->w_next)
+ {
+ 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();