mirror of
https://github.com/neovim/neovim.git
synced 2024-12-20 03:05:11 -07:00
fix(ui): redraw winbar alongside statusline
Remove `w_redr_winbar` and use `w_redr_status` to redraw the winbar to ensure that winbar redraw is triggered alongside the statusline redraw.
This commit is contained in:
parent
4c6626f03d
commit
353553f913
@ -1389,8 +1389,7 @@ struct window_S {
|
|||||||
// w_redr_type is REDRAW_TOP
|
// w_redr_type is REDRAW_TOP
|
||||||
linenr_T w_redraw_top; // when != 0: first line needing redraw
|
linenr_T w_redraw_top; // when != 0: first line needing redraw
|
||||||
linenr_T w_redraw_bot; // when != 0: last line needing redraw
|
linenr_T w_redraw_bot; // when != 0: last line needing redraw
|
||||||
bool w_redr_status; // if true status line must be redrawn
|
bool w_redr_status; // if true statusline/winbar must be redrawn
|
||||||
bool w_redr_winbar; // if true window bar must be redrawn
|
|
||||||
bool w_redr_border; // if true border must be redrawn
|
bool w_redr_border; // if true border must be redrawn
|
||||||
|
|
||||||
// remember what is shown in the ruler for this window (if 'ruler' set)
|
// remember what is shown in the ruler for this window (if 'ruler' set)
|
||||||
|
@ -277,21 +277,12 @@ void redrawWinline(win_T *wp, linenr_T lnum)
|
|||||||
void redraw_buf_status_later(buf_T *buf)
|
void redraw_buf_status_later(buf_T *buf)
|
||||||
{
|
{
|
||||||
FOR_ALL_WINDOWS_IN_TAB(wp, curtab) {
|
FOR_ALL_WINDOWS_IN_TAB(wp, curtab) {
|
||||||
if (wp->w_buffer != buf) {
|
if (wp->w_buffer == buf && (wp->w_status_height || (wp == curwin && global_stl_height())
|
||||||
continue;
|
|| wp->w_winbar_height)) {
|
||||||
}
|
|
||||||
bool redraw = false;
|
|
||||||
|
|
||||||
if (wp->w_status_height || (wp == curwin && global_stl_height())) {
|
|
||||||
wp->w_redr_status = true;
|
wp->w_redr_status = true;
|
||||||
redraw = true;
|
if (must_redraw < VALID) {
|
||||||
}
|
must_redraw = VALID;
|
||||||
if (wp->w_winbar_height) {
|
}
|
||||||
wp->w_redr_winbar = true;
|
|
||||||
redraw = true;
|
|
||||||
}
|
|
||||||
if (redraw && must_redraw < VALID) {
|
|
||||||
must_redraw = VALID;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -397,9 +388,6 @@ int update_screen(int type)
|
|||||||
if (wp->w_floating) {
|
if (wp->w_floating) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (wp->w_winrow + wp->w_winbar_height > valid) {
|
|
||||||
wp->w_redr_winbar = true;
|
|
||||||
}
|
|
||||||
if (W_ENDROW(wp) > valid) {
|
if (W_ENDROW(wp) > valid) {
|
||||||
wp->w_redr_type = MAX(wp->w_redr_type, NOT_VALID);
|
wp->w_redr_type = MAX(wp->w_redr_type, NOT_VALID);
|
||||||
}
|
}
|
||||||
@ -432,9 +420,6 @@ int update_screen(int type)
|
|||||||
} else {
|
} else {
|
||||||
wp->w_redr_type = NOT_VALID;
|
wp->w_redr_type = NOT_VALID;
|
||||||
if (wp->w_winrow + wp->w_winbar_height <= msg_scrolled) {
|
if (wp->w_winrow + wp->w_winbar_height <= msg_scrolled) {
|
||||||
wp->w_redr_winbar = true;
|
|
||||||
}
|
|
||||||
if (!is_stl_global && W_ENDROW(wp) + wp->w_status_height <= msg_scrolled) {
|
|
||||||
wp->w_redr_status = true;
|
wp->w_redr_status = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -590,10 +575,8 @@ int update_screen(int type)
|
|||||||
|
|
||||||
// redraw status line and window bar after the window to minimize cursor movement
|
// redraw status line and window bar after the window to minimize cursor movement
|
||||||
if (wp->w_redr_status) {
|
if (wp->w_redr_status) {
|
||||||
win_redr_status(wp);
|
|
||||||
}
|
|
||||||
if (wp->w_redr_winbar) {
|
|
||||||
win_redr_winbar(wp);
|
win_redr_winbar(wp);
|
||||||
|
win_redr_status(wp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -747,7 +730,6 @@ static void win_update(win_T *wp, DecorProviders *providers)
|
|||||||
|
|
||||||
if (type >= NOT_VALID) {
|
if (type >= NOT_VALID) {
|
||||||
wp->w_redr_status = true;
|
wp->w_redr_status = true;
|
||||||
wp->w_redr_winbar = true;
|
|
||||||
wp->w_lines_valid = 0;
|
wp->w_lines_valid = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4539,17 +4521,9 @@ void status_redraw_all(void)
|
|||||||
bool is_stl_global = global_stl_height() != 0;
|
bool is_stl_global = global_stl_height() != 0;
|
||||||
|
|
||||||
FOR_ALL_WINDOWS_IN_TAB(wp, curtab) {
|
FOR_ALL_WINDOWS_IN_TAB(wp, curtab) {
|
||||||
bool redraw = false;
|
if ((!is_stl_global && wp->w_status_height) || (is_stl_global && wp == curwin)
|
||||||
|
|| wp->w_winbar_height) {
|
||||||
if ((!is_stl_global && wp->w_status_height) || (is_stl_global && wp == curwin)) {
|
|
||||||
wp->w_redr_status = true;
|
wp->w_redr_status = true;
|
||||||
redraw = true;
|
|
||||||
}
|
|
||||||
if (wp->w_winbar_height) {
|
|
||||||
wp->w_redr_winbar = true;
|
|
||||||
redraw = true;
|
|
||||||
}
|
|
||||||
if (redraw) {
|
|
||||||
redraw_later(wp, VALID);
|
redraw_later(wp, VALID);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -4567,20 +4541,9 @@ void status_redraw_buf(buf_T *buf)
|
|||||||
bool is_stl_global = global_stl_height() != 0;
|
bool is_stl_global = global_stl_height() != 0;
|
||||||
|
|
||||||
FOR_ALL_WINDOWS_IN_TAB(wp, curtab) {
|
FOR_ALL_WINDOWS_IN_TAB(wp, curtab) {
|
||||||
if (wp->w_buffer != buf) {
|
if (wp->w_buffer == buf && ((!is_stl_global && wp->w_status_height)
|
||||||
continue;
|
|| (is_stl_global && wp == curwin) || wp->w_winbar_height)) {
|
||||||
}
|
|
||||||
bool redraw = false;
|
|
||||||
|
|
||||||
if ((!is_stl_global && wp->w_status_height) || (is_stl_global && wp == curwin)) {
|
|
||||||
wp->w_redr_status = true;
|
wp->w_redr_status = true;
|
||||||
redraw = true;
|
|
||||||
}
|
|
||||||
if (wp->w_winbar_height) {
|
|
||||||
wp->w_redr_winbar = true;
|
|
||||||
redraw = true;
|
|
||||||
}
|
|
||||||
if (redraw) {
|
|
||||||
redraw_later(wp, VALID);
|
redraw_later(wp, VALID);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -4593,10 +4556,8 @@ void redraw_statuslines(void)
|
|||||||
{
|
{
|
||||||
FOR_ALL_WINDOWS_IN_TAB(wp, curtab) {
|
FOR_ALL_WINDOWS_IN_TAB(wp, curtab) {
|
||||||
if (wp->w_redr_status) {
|
if (wp->w_redr_status) {
|
||||||
win_redr_status(wp);
|
|
||||||
}
|
|
||||||
if (wp->w_redr_winbar) {
|
|
||||||
win_redr_winbar(wp);
|
win_redr_winbar(wp);
|
||||||
|
win_redr_status(wp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (redraw_tabline) {
|
if (redraw_tabline) {
|
||||||
@ -5120,12 +5081,8 @@ static void win_redr_winbar(win_T *wp)
|
|||||||
}
|
}
|
||||||
entered = true;
|
entered = true;
|
||||||
|
|
||||||
wp->w_redr_winbar = false;
|
if (wp->w_winbar_height == 0 || !redrawing()) {
|
||||||
if (wp->w_winbar_height == 0) {
|
// Do nothing.
|
||||||
// No window bar, do nothing.
|
|
||||||
} else if (!redrawing()) {
|
|
||||||
// Don't redraw right now, do it later.
|
|
||||||
wp->w_redr_winbar = true;
|
|
||||||
} else if (*p_wbr != NUL || *wp->w_p_wbr != NUL) {
|
} else if (*p_wbr != NUL || *wp->w_p_wbr != NUL) {
|
||||||
int saved_did_emsg = did_emsg;
|
int saved_did_emsg = did_emsg;
|
||||||
|
|
||||||
|
@ -6709,7 +6709,7 @@ void set_winbar(void)
|
|||||||
if (wp->w_winbar_height != winbar_height) {
|
if (wp->w_winbar_height != winbar_height) {
|
||||||
wp->w_winbar_height = winbar_height;
|
wp->w_winbar_height = winbar_height;
|
||||||
win_set_inner_size(wp);
|
win_set_inner_size(wp);
|
||||||
wp->w_redr_winbar = winbar_height;
|
wp->w_redr_status = wp->w_redr_status || winbar_height;
|
||||||
|
|
||||||
if (winbar_height == 0) {
|
if (winbar_height == 0) {
|
||||||
// When removing winbar, deallocate the w_winbar_click_defs array
|
// When removing winbar, deallocate the w_winbar_click_defs array
|
||||||
|
Loading…
Reference in New Issue
Block a user