To: vim_dev@googlegroups.com Subject: Patch 7.4.1835 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 7.4.1835 Problem: When splitting and closing a window the status height changes. Solution: Compute the frame height correctly. (Hirohito Higashi) Files: src/window.c, src/testdir/test_alot.vim, src/testdir/test_window_cmd.vim *** ../vim-7.4.1834/src/window.c 2016-04-03 21:22:53.246228473 +0200 --- src/window.c 2016-05-24 11:24:28.151510654 +0200 *************** *** 1165,1172 **** * one row for the status line */ win_new_height(wp, new_size); if (flags & (WSP_TOP | WSP_BOT)) ! frame_new_height(curfrp, curfrp->fr_height ! - (new_size + STATUS_HEIGHT), flags & WSP_TOP, FALSE); else win_new_height(oldwin, oldwin_height - (new_size + STATUS_HEIGHT)); if (before) /* new window above current one */ --- 1165,1177 ---- * one row for the status line */ win_new_height(wp, new_size); if (flags & (WSP_TOP | WSP_BOT)) ! { ! int new_fr_height = curfrp->fr_height - new_size; ! ! if (!((flags & WSP_BOT) && p_ls == 0)) ! new_fr_height -= STATUS_HEIGHT; ! frame_new_height(curfrp, new_fr_height, flags & WSP_TOP, FALSE); ! } else win_new_height(oldwin, oldwin_height - (new_size + STATUS_HEIGHT)); if (before) /* new window above current one */ *************** *** 1179,1196 **** { wp->w_winrow = oldwin->w_winrow + oldwin->w_height + STATUS_HEIGHT; wp->w_status_height = oldwin->w_status_height; ! /* Don't set the status_height for oldwin yet, this might break ! * frame_fix_height(oldwin), therefore will be set below. */ } if (flags & WSP_BOT) frame_add_statusline(curfrp); frame_fix_height(wp); frame_fix_height(oldwin); - - if (!before) - /* new window above current one, set the status_height after - * frame_fix_height(oldwin) */ - oldwin->w_status_height = STATUS_HEIGHT; } if (flags & (WSP_TOP | WSP_BOT)) --- 1184,1196 ---- { wp->w_winrow = oldwin->w_winrow + oldwin->w_height + STATUS_HEIGHT; wp->w_status_height = oldwin->w_status_height; ! if (!(flags & WSP_BOT)) ! oldwin->w_status_height = STATUS_HEIGHT; } if (flags & WSP_BOT) frame_add_statusline(curfrp); frame_fix_height(wp); frame_fix_height(oldwin); } if (flags & (WSP_TOP | WSP_BOT)) *** ../vim-7.4.1834/src/testdir/test_alot.vim 2016-04-20 16:19:10.030987632 +0200 --- src/testdir/test_alot.vim 2016-05-24 11:22:57.267511905 +0200 *************** *** 32,34 **** --- 32,35 ---- source test_timers.vim source test_undolevels.vim source test_unlet.vim + source test_window_cmd.vim *** ../vim-7.4.1834/src/testdir/test_window_cmd.vim 2016-05-24 11:29:44.927506297 +0200 --- src/testdir/test_window_cmd.vim 2016-05-24 11:23:26.679511500 +0200 *************** *** 0 **** --- 1,37 ---- + " Tests for window cmd (:wincmd, :split, :vsplit, :resize and etc...) + + func Test_window_cmd_ls0_with_split() + set ls=0 + set splitbelow + split + quit + call assert_equal(0, &lines - &cmdheight - winheight(0)) + new | only! + " + set splitbelow&vim + botright split + quit + call assert_equal(0, &lines - &cmdheight - winheight(0)) + new | only! + set ls&vim + endfunc + + func Test_window_cmd_cmdwin_with_vsp() + let efmt='Expected 0 but got %d (in ls=%d, %s window)' + for v in range(0, 2) + exec "set ls=" . v + vsplit + call feedkeys("q:\") + let ac = &lines - (&cmdheight + winheight(0) + !!v) + let emsg = printf(efmt, ac, v, 'left') + call assert_equal(0, ac, emsg) + wincmd w + let ac = &lines - (&cmdheight + winheight(0) + !!v) + let emsg = printf(efmt, ac, v, 'right') + call assert_equal(0, ac, emsg) + new | only! + endfor + set ls&vim + endfunc + + " vim: sw=2 et *** ../vim-7.4.1834/src/version.c 2016-05-24 10:51:26.543537913 +0200 --- src/version.c 2016-05-24 11:25:18.467509962 +0200 *************** *** 755,756 **** --- 755,758 ---- { /* Add new patch number below this line */ + /**/ + 1835, /**/ -- No engineer can take a shower without wondering if some sort of Teflon coating would make showering unnecessary. (Scott Adams - The Dilbert principle) /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ \\\ an exciting new programming language -- http://www.Zimbu.org /// \\\ help me help AIDS victims -- http://ICCF-Holland.org ///