0
0
mirror of https://github.com/vim/vim.git synced 2025-09-30 04:44:14 -04:00

patch 8.2.2815: status line flickers when redrawing popup menu info

Problem:    Status line flickers when redrawing popup menu info.
Solution:   Do not redraw the status line when the focus is in the popup
            window. (issue #8144)
This commit is contained in:
Bram Moolenaar
2021-04-27 20:06:57 +02:00
parent b06b50dfa0
commit b80d2fb0e7
2 changed files with 11 additions and 0 deletions

View File

@@ -925,6 +925,8 @@ pum_set_selected(int n, int repeat UNUSED)
|| (curtab != curtab_save || (curtab != curtab_save
&& valid_tabpage(curtab_save))) && valid_tabpage(curtab_save)))
{ {
int save_redr_status;
if (curtab != curtab_save && valid_tabpage(curtab_save)) if (curtab != curtab_save && valid_tabpage(curtab_save))
goto_tabpage_tp(curtab_save, FALSE, FALSE); goto_tabpage_tp(curtab_save, FALSE, FALSE);
@@ -953,13 +955,20 @@ pum_set_selected(int n, int repeat UNUSED)
// Update the screen before drawing the popup menu. // Update the screen before drawing the popup menu.
// Enable updating the status lines. // Enable updating the status lines.
pum_pretend_not_visible = TRUE; pum_pretend_not_visible = TRUE;
// But don't draw text at the new popup menu position, // But don't draw text at the new popup menu position,
// it causes flicker. When resizing we need to draw // it causes flicker. When resizing we need to draw
// anyway, the position may change later. // anyway, the position may change later.
// Also do not redraw the status line of the original
// current window here, to avoid it gets drawn with
// StatusLineNC for a moment and cause flicker.
pum_will_redraw = !resized; pum_will_redraw = !resized;
save_redr_status = curwin_save->w_redr_status;
curwin_save->w_redr_status = FALSE;
update_screen(0); update_screen(0);
pum_pretend_not_visible = FALSE; pum_pretend_not_visible = FALSE;
pum_will_redraw = FALSE; pum_will_redraw = FALSE;
curwin_save->w_redr_status = save_redr_status;
if (!resized && win_valid(curwin_save)) if (!resized && win_valid(curwin_save))
{ {

View File

@@ -750,6 +750,8 @@ static char *(features[]) =
static int included_patches[] = static int included_patches[] =
{ /* Add new patch number below this line */ { /* Add new patch number below this line */
/**/
2815,
/**/ /**/
2814, 2814,
/**/ /**/