1
0
forked from aniani/vim

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)
This commit is contained in:
Bram Moolenaar
2018-08-26 21:23:07 +02:00
parent 0529583ff1
commit 4cbdf155ca
3 changed files with 26 additions and 19 deletions

View 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

View 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

View File

@@ -794,6 +794,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
328,
/**/
327,
/**/