forked from aniani/vim
patch 9.0.1491: wrong scrolling with ls=0 and :botright split
Problem: Wrong scrolling with ls=0 and :botright split. Solution: Add statusline before calling frame_new_height(). (closes #12299)
This commit is contained in:
14
src/window.c
14
src/window.c
@@ -1307,6 +1307,7 @@ win_split_ins(
|
||||
// "new_size" of the current window goes to the new window, use
|
||||
// one row for the status line
|
||||
win_new_height(wp, new_size);
|
||||
int old_status_height = oldwin->w_status_height;
|
||||
if (flags & (WSP_TOP | WSP_BOT))
|
||||
{
|
||||
int new_fr_height = curfrp->fr_height - new_size
|
||||
@@ -1314,6 +1315,8 @@ win_split_ins(
|
||||
|
||||
if (!((flags & WSP_BOT) && p_ls == 0))
|
||||
new_fr_height -= STATUS_HEIGHT;
|
||||
if (flags & WSP_BOT)
|
||||
frame_add_statusline(curfrp);
|
||||
frame_new_height(curfrp, new_fr_height, flags & WSP_TOP, FALSE);
|
||||
}
|
||||
else
|
||||
@@ -1328,12 +1331,10 @@ win_split_ins(
|
||||
{
|
||||
wp->w_winrow = oldwin->w_winrow + VISIBLE_HEIGHT(oldwin)
|
||||
+ STATUS_HEIGHT;
|
||||
wp->w_status_height = oldwin->w_status_height;
|
||||
wp->w_status_height = old_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);
|
||||
}
|
||||
@@ -3791,12 +3792,7 @@ frame_add_statusline(frame_T *frp)
|
||||
if (frp->fr_layout == FR_LEAF)
|
||||
{
|
||||
wp = frp->fr_win;
|
||||
if (wp->w_status_height == 0)
|
||||
{
|
||||
if (wp->w_height > 0) // don't make it negative
|
||||
--wp->w_height;
|
||||
wp->w_status_height = STATUS_HEIGHT;
|
||||
}
|
||||
wp->w_status_height = STATUS_HEIGHT;
|
||||
}
|
||||
else if (frp->fr_layout == FR_ROW)
|
||||
{
|
||||
|
Reference in New Issue
Block a user