forked from aniani/vim
patch 8.2.2679: status line missing for non-current window with winbar
Problem: Winbar drawn over status line for non-current window with winbar if frame is zero height. (Leonid V. Fedorenchik) Solution: Do not draw the window if the frame height is zero. (closes #8037)
This commit is contained in:
@@ -377,6 +377,20 @@ update_screen(int type_arg)
|
||||
return OK;
|
||||
}
|
||||
|
||||
/*
|
||||
* Return the row for drawing the statusline and the ruler of window "wp".
|
||||
*/
|
||||
static int
|
||||
statusline_row(win_T *wp)
|
||||
{
|
||||
#if defined(FEAT_PROP_POPUP)
|
||||
// If the window is really zero height the winbar isn't displayed.
|
||||
if (wp->w_frame->fr_height == wp->w_status_height && !popup_is_popup(wp))
|
||||
return wp->w_winrow;
|
||||
#endif
|
||||
return W_WINROW(wp) + wp->w_height;
|
||||
}
|
||||
|
||||
/*
|
||||
* Redraw the status line of window wp.
|
||||
*
|
||||
@@ -401,6 +415,8 @@ win_redr_status(win_T *wp, int ignore_pum UNUSED)
|
||||
return;
|
||||
busy = TRUE;
|
||||
|
||||
row = statusline_row(wp);
|
||||
|
||||
wp->w_redr_status = FALSE;
|
||||
if (wp->w_status_height == 0)
|
||||
{
|
||||
@@ -500,7 +516,6 @@ win_redr_status(win_T *wp, int ignore_pum UNUSED)
|
||||
len = this_ru_col - 1;
|
||||
}
|
||||
|
||||
row = W_WINROW(wp) + wp->w_height;
|
||||
screen_puts(p, row, wp->w_wincol, attr);
|
||||
screen_fill(row, row + 1, len + wp->w_wincol,
|
||||
this_ru_col + wp->w_wincol, fillchar, fillchar, attr);
|
||||
@@ -524,8 +539,7 @@ win_redr_status(win_T *wp, int ignore_pum UNUSED)
|
||||
fillchar = fillchar_status(&attr, wp);
|
||||
else
|
||||
fillchar = fillchar_vsep(&attr);
|
||||
screen_putchar(fillchar, W_WINROW(wp) + wp->w_height, W_ENDCOL(wp),
|
||||
attr);
|
||||
screen_putchar(fillchar, row, W_ENDCOL(wp), attr);
|
||||
}
|
||||
busy = FALSE;
|
||||
}
|
||||
@@ -680,7 +694,7 @@ win_redr_ruler(win_T *wp, int always, int ignore_pum)
|
||||
cursor_off();
|
||||
if (wp->w_status_height)
|
||||
{
|
||||
row = W_WINROW(wp) + wp->w_height;
|
||||
row = statusline_row(wp);
|
||||
fillchar = fillchar_status(&attr, wp);
|
||||
off = wp->w_wincol;
|
||||
width = wp->w_width;
|
||||
@@ -1468,8 +1482,13 @@ win_update(win_T *wp)
|
||||
wp->w_lines_valid = 0;
|
||||
}
|
||||
|
||||
// Window is zero-height: nothing to draw.
|
||||
if (wp->w_height + WINBAR_HEIGHT(wp) == 0)
|
||||
// Window frame is zero-height: nothing to draw.
|
||||
if (wp->w_height + WINBAR_HEIGHT(wp) == 0
|
||||
|| (wp->w_frame->fr_height == wp->w_status_height
|
||||
#if defined(FEAT_PROP_POPUP)
|
||||
&& !popup_is_popup(wp)
|
||||
#endif
|
||||
))
|
||||
{
|
||||
wp->w_redr_type = 0;
|
||||
return;
|
||||
|
Reference in New Issue
Block a user