# HG changeset patch # User Christian Brabandt # Date 1535311807 -7200 # Node ID 100a44722322a0cfc84f1902de097750702d9ebd # Parent e5ecb4e6ae55541fc55b987a6b0ad975d2539634 patch 8.1.0328: inputlist() doesn't work with a timer commit https://github.com/vim/vim/commit/4cbdf155ca7bb6fbdab2d5acafae5fc712fca8b8 Author: Bram Moolenaar Date: Sun Aug 26 21:23:07 2018 +0200 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 --- a/src/misc1.c +++ b/src/misc1.c @@ -3747,18 +3747,18 @@ prompt_for_number(int *mouse_used) else MSG_PUTS(_("Type number and (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 diff --git a/src/screen.c b/src/screen.c --- a/src/screen.c +++ b/src/screen.c @@ -447,32 +447,37 @@ redraw_after_callback(int call_update_sc ++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 -#endif - && call_update_screen) - update_screen(0); - /* Redraw in the same position, so that the user can continue - * editing the command. */ - redrawcmdline_ex(FALSE); + && 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); + } } 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 --- a/src/version.c +++ b/src/version.c @@ -795,6 +795,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 328, +/**/ 327, /**/ 326,