patch 8.1.0328: inputlist() doesn't work with a timer
Problem: inputlist() doesn't work with a timer. (Dominique Pelle)
Solution: Don't redraw when cmdline_row is zero. (Hirohito Higashi,
closes #3239)
diff --git a/src/misc1.c b/src/misc1.c
index f2aa96b..dca599f 100644
--- a/src/misc1.c
+++ b/src/misc1.c
@@ -3747,18 +3747,18 @@
else
MSG_PUTS(_("Type number and <Enter> (empty cancels): "));
- /* Set the state such that text can be selected/copied/pasted and we still
- * get mouse events. */
+ // Set the state such that text can be selected/copied/pasted and we still
+ // get mouse events. redraw_after_callback() will not redraw if cmdline_row
+ // is zero.
save_cmdline_row = cmdline_row;
cmdline_row = 0;
save_State = State;
- State = ASKMORE; /* prevents a screen update when using a timer */
+ State = CMDLINE;
#ifdef FEAT_MOUSE
- /* May show different mouse shape. */
+ // May show different mouse shape.
setmouse();
#endif
-
i = get_number(TRUE, mouse_used);
if (KeyTyped)
{
@@ -3773,7 +3773,7 @@
cmdline_row = save_cmdline_row;
State = save_State;
#ifdef FEAT_MOUSE
- /* May need to restore mouse shape. */
+ // May need to restore mouse shape.
setmouse();
#endif
diff --git a/src/screen.c b/src/screen.c
index a4eef32..410772a 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -447,32 +447,37 @@
++redrawing_for_callback;
if (State == HITRETURN || State == ASKMORE)
- ; /* do nothing */
+ ; // do nothing
else if (State & CMDLINE)
{
- /* Redrawing only works when the screen didn't scroll. Don't clear
- * wildmenu entries. */
- if (msg_scrolled == 0
+ // Don't redraw when in prompt_for_number().
+ if (cmdline_row > 0)
+ {
+ // Redrawing only works when the screen didn't scroll. Don't clear
+ // wildmenu entries.
+ if (msg_scrolled == 0
#ifdef FEAT_WILDMENU
- && wild_menu_showing == 0
+ && wild_menu_showing == 0
#endif
- && call_update_screen)
- update_screen(0);
- /* Redraw in the same position, so that the user can continue
- * editing the command. */
- redrawcmdline_ex(FALSE);
+ && call_update_screen)
+ update_screen(0);
+
+ // Redraw in the same position, so that the user can continue
+ // editing the command.
+ redrawcmdline_ex(FALSE);
+ }
}
else if (State & (NORMAL | INSERT | TERMINAL))
{
- /* keep the command line if possible */
+ // keep the command line if possible
update_screen(VALID_NO_UPDATE);
setcursor();
}
cursor_on();
#ifdef FEAT_GUI
if (gui.in_use && !gui_mch_is_blink_off())
- /* Don't update the cursor when it is blinking and off to avoid
- * flicker. */
+ // Don't update the cursor when it is blinking and off to avoid
+ // flicker.
out_flush_cursor(FALSE, FALSE);
else
#endif
diff --git a/src/version.c b/src/version.c
index 508e309..53089f5 100644
--- a/src/version.c
+++ b/src/version.c
@@ -795,6 +795,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 328,
+/**/
327,
/**/
326,