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:
@@ -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))
|
||||||
{
|
{
|
||||||
|
@@ -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,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user