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:
12
src/misc1.c
12
src/misc1.c
@@ -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
|
||||
|
||||
|
31
src/screen.c
31
src/screen.c
@@ -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
|
||||
|
@@ -794,6 +794,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
328,
|
||||
/**/
|
||||
327,
|
||||
/**/
|
||||
|
Reference in New Issue
Block a user