Problem: In the GUI, when a timer uses feedkeys(), it still waits for an
event. (Raymond Ko)
Solution: Check tb_change_cnt in one more place.
}
}
+/*
+ * Returns OK if a character was found to be available within the given time,
+ * or FAIL otherwise.
+ */
static int
gui_wait_for_chars_or_timer(long wtime)
{
if (typebuf.tb_change_cnt != tb_change_cnt)
{
/* timer may have used feedkeys() */
- return FALSE;
+ return FAIL;
}
if (due_time <= 0 || (wtime > 0 && due_time > remaining))
due_time = remaining;
if (gui_mch_wait_for_chars(due_time))
- return TRUE;
+ return OK;
if (wtime > 0)
remaining -= due_time;
}
- return FALSE;
+ return FAIL;
#else
return gui_mch_wait_for_chars(wtime);
#endif
gui_wait_for_chars(long wtime)
{
int retval;
+ int tb_change_cnt = typebuf.tb_change_cnt;
#ifdef FEAT_MENU
/*
}
#endif
- if (retval == FAIL)
+ if (retval == FAIL && typebuf.tb_change_cnt == tb_change_cnt)
{
/* Blocking wait. */
before_blocking();
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 619,
/**/
618,
/**/