changeset 16166:a3284dd27de6 v8.1.1088

patch 8.1.1088: height of quickfix window not retained with vertical split commit https://github.com/vim/vim/commit/9e1e358d376284c3aaf3a9f1e568bca297405f62 Author: Bram Moolenaar <Bram@vim.org> Date: Sat Mar 30 19:49:06 2019 +0100 patch 8.1.1088: height of quickfix window not retained with vertical split Problem: Height of quickfix window not retained with vertical split. Solution: Use frame_fixed_height() and frame_fixed_width(). (Hongbo Liu, closes #4013, closes #2998)
author Bram Moolenaar <Bram@vim.org>
date Sat, 30 Mar 2019 20:00:05 +0100
parents 647e37b405fd
children ff925d952c91
files src/testdir/test_winbuf_close.vim src/version.c src/window.c
diffstat 3 files changed, 32 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/src/testdir/test_winbuf_close.vim
+++ b/src/testdir/test_winbuf_close.vim
@@ -158,3 +158,29 @@ func Test_winfixwidth_on_close()
   %bwipeout!
   setlocal nowinfixwidth splitbelow& splitright&
 endfunction
+
+" Test that 'winfixheight' will be respected even there is non-leaf frame
+fun! Test_winfixheight_non_leaf_frame()
+  vsplit
+  botright 11new
+  let l:wid = win_getid()
+  setlocal winfixheight
+  call assert_equal(11, winheight(l:wid))
+  botright new
+  bwipe!
+  call assert_equal(11, winheight(l:wid))
+  %bwipe!
+endf
+
+" Test that 'winfixwidth' will be respected even there is non-leaf frame
+fun! Test_winfixwidth_non_leaf_frame()
+  split
+  topleft 11vnew
+  let l:wid = win_getid()
+  setlocal winfixwidth
+  call assert_equal(11, winwidth(l:wid))
+  topleft new
+  bwipe!
+  call assert_equal(11, winwidth(l:wid))
+  %bwipe!
+endf
--- a/src/version.c
+++ b/src/version.c
@@ -776,6 +776,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1088,
+/**/
     1087,
 /**/
     1086,
--- a/src/window.c
+++ b/src/window.c
@@ -2677,10 +2677,10 @@ winframe_remove(
 	    {
 		if (frp != NULL)
 		{
-		    if (frp->fr_win != NULL && !frp->fr_win->w_p_wfh)
+		    if (!frame_fixed_height(frp))
 		    {
 			frp2 = frp;
-			wp = frp->fr_win;
+			wp = frame2win(frp2);
 			break;
 		    }
 		    frp = frp->fr_prev;
@@ -2714,10 +2714,10 @@ winframe_remove(
 	    {
 		if (frp != NULL)
 		{
-		    if (frp->fr_win != NULL && !frp->fr_win->w_p_wfw)
+		    if (!frame_fixed_width(frp))
 		    {
 			frp2 = frp;
-			wp = frp->fr_win;
+			wp = frame2win(frp2);
 			break;
 		    }
 		    frp = frp->fr_prev;