]> granicus.if.org Git - vim/commitdiff
patch 8.1.0328: inputlist() doesn't work with a timer v8.1.0328
authorBram Moolenaar <Bram@vim.org>
Sun, 26 Aug 2018 19:23:07 +0000 (21:23 +0200)
committerBram Moolenaar <Bram@vim.org>
Sun, 26 Aug 2018 19:23:07 +0000 (21:23 +0200)
Problem:    inputlist() doesn't work with a timer. (Dominique Pelle)
Solution:   Don't redraw when cmdline_row is zero. (Hirohito Higashi,
            closes #3239)

src/misc1.c
src/screen.c
src/version.c

index f2aa96b372b2e4121b7d2c14d650b85d93dea864..dca599f500532321720c88208190c6c8478715f9 100644 (file)
@@ -3747,18 +3747,18 @@ prompt_for_number(int *mouse_used)
     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 @@ prompt_for_number(int *mouse_used)
        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
 
index a4eef32052f5ad22ec266b9d387f5f4c463314ef..410772ac57696153663e8e165e149555d855fa90 100644 (file)
@@ -447,32 +447,37 @@ redraw_after_callback(int call_update_screen)
     ++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
index 508e3098d5722f2950d8b0cad0d6257da34e23fa..53089f5d0c602f9cf5cc3aadfa5fbf6ed1320093 100644 (file)
@@ -794,6 +794,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    328,
 /**/
     327,
 /**/