Mercurial > vim
changeset 24551:aa04faf1590d v8.2.2815
patch 8.2.2815: status line flickers when redrawing popup menu info
Commit: https://github.com/vim/vim/commit/b80d2fb0e7b9adec4cff1bc4e2d30635cb70502e
Author: Bram Moolenaar <Bram@vim.org>
Date: Tue Apr 27 20:06:57 2021 +0200
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)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Tue, 27 Apr 2021 20:15:03 +0200 |
parents | 80ad0944dbe0 |
children | b243f528702a |
files | src/popupmenu.c src/version.c |
diffstat | 2 files changed, 11 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/popupmenu.c +++ b/src/popupmenu.c @@ -925,6 +925,8 @@ pum_set_selected(int n, int repeat UNUSE || (curtab != curtab_save && valid_tabpage(curtab_save))) { + int save_redr_status; + if (curtab != curtab_save && valid_tabpage(curtab_save)) goto_tabpage_tp(curtab_save, FALSE, FALSE); @@ -953,13 +955,20 @@ pum_set_selected(int n, int repeat UNUSE // Update the screen before drawing the popup menu. // Enable updating the status lines. pum_pretend_not_visible = TRUE; + // But don't draw text at the new popup menu position, // it causes flicker. When resizing we need to draw // 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; + save_redr_status = curwin_save->w_redr_status; + curwin_save->w_redr_status = FALSE; update_screen(0); pum_pretend_not_visible = FALSE; pum_will_redraw = FALSE; + curwin_save->w_redr_status = save_redr_status; if (!resized && win_valid(curwin_save)) {