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)
diff --git a/src/popupmenu.c b/src/popupmenu.c
index 8033d72..f4f210b 100644
--- a/src/popupmenu.c
+++ b/src/popupmenu.c
@@ -361,6 +361,8 @@
 	// 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 @@
 			{
 			    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 @@
 	popup_hide_info();
 #endif
 
-    if (!resized)
-	pum_redraw();
-
     return resized;
 }