patch 8.2.1995: the popup menu can cause too much redrawing
Problem:    The popup menu can cause too much redrawing.
Solution:   Reduce the length of the displayed text. (Yasuhiro Matsumoto,
            closes #7306)
			
			
This commit is contained in:
		@ -361,6 +361,8 @@ pum_display(
 | 
			
		||||
	// redo the positioning.  Limit this to two times, when there is not
 | 
			
		||||
	// much room the window size will keep changing.
 | 
			
		||||
    } while (pum_set_selected(selected, redo_count) && ++redo_count <= 2);
 | 
			
		||||
 | 
			
		||||
    pum_redraw();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
@ -541,8 +543,23 @@ pum_redraw(void)
 | 
			
		||||
			{
 | 
			
		||||
			    if (st != NULL)
 | 
			
		||||
			    {
 | 
			
		||||
				screen_puts_len(st, (int)STRLEN(st), row, col,
 | 
			
		||||
									attr);
 | 
			
		||||
				int size = (int)STRLEN(st);
 | 
			
		||||
				int cells = (*mb_string2cells)(st, size);
 | 
			
		||||
 | 
			
		||||
				// only draw the text that fits
 | 
			
		||||
				while (size > 0
 | 
			
		||||
					  && col + cells > pum_width + pum_col)
 | 
			
		||||
				{
 | 
			
		||||
				    --size;
 | 
			
		||||
				    if (has_mbyte)
 | 
			
		||||
				    {
 | 
			
		||||
					size -= (*mb_head_off)(st, st + size);
 | 
			
		||||
					cells -= (*mb_ptr2cells)(st + size);
 | 
			
		||||
				    }
 | 
			
		||||
				    else
 | 
			
		||||
					--cells;
 | 
			
		||||
				}
 | 
			
		||||
				screen_puts_len(st, size, row, col, attr);
 | 
			
		||||
				vim_free(st);
 | 
			
		||||
			    }
 | 
			
		||||
			    col += width;
 | 
			
		||||
@ -990,9 +1007,6 @@ pum_set_selected(int n, int repeat UNUSED)
 | 
			
		||||
	popup_hide_info();
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    if (!resized)
 | 
			
		||||
	pum_redraw();
 | 
			
		||||
 | 
			
		||||
    return resized;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -750,6 +750,8 @@ static char *(features[]) =
 | 
			
		||||
 | 
			
		||||
static int included_patches[] =
 | 
			
		||||
{   /* Add new patch number below this line */
 | 
			
		||||
/**/
 | 
			
		||||
    1995,
 | 
			
		||||
/**/
 | 
			
		||||
    1994,
 | 
			
		||||
/**/
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user