Problem: When the only window has 'winfixheight' set and 'laststatus'
is one, splitting it leaves one screen line unused. This
happens for example when jumping to an item from a maximized
quickfix window (rendcrx)
Solution: Do not subtract the height of the status line twice
(Hirohito Higashi)
fixes: #20495
closes: #20871
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
set winminheight& laststatus&
endfunc
+" Splitting the only window while it has 'winfixheight' set and 'laststatus' is
+" one must not leave a screen line unused.
+func Test_winfixheight_split_only_window()
+ set laststatus=1
+ new
+ only!
+ setlocal winfixheight
+ split
+ " Two windows, both with a status line, and the command line.
+ call assert_equal(&lines - &cmdheight - 2, winheight(1) + winheight(2))
+
+ only!
+ setlocal winfixheight&
+ set laststatus&
+ bwipe!
+endfunc
+
" Test that setting 'laststatus' from 0 to 2 gives all windows in a vertical
" split (FR_ROW) the same height and correct status line position.
func Test_laststatus_vsplit_row_height()
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 871,
/**/
870,
/**/
win_setheight_win(oldwin->w_height + new_size
+ statusline_height(oldwin), oldwin);
+ // w_height now excludes the status line
oldwin_height = oldwin->w_height;
- if (need_status)
- oldwin_height -= statusline_height(oldwin);
}
// Only make all windows the same height if one of them (except oldwin)