patch 8.0.1276: key lost when window closed in exit callback
Problem: Typed key is lost when the terminal window is closed in exit
callback. (Gabriel Barta)
Solution: When the current window changes bail out of the wait loop. (closes
#2302)
diff --git a/src/misc2.c b/src/misc2.c
index 4d4d947..63d9e81 100644
--- a/src/misc2.c
+++ b/src/misc2.c
@@ -6300,6 +6300,8 @@
void
parse_queued_messages(void)
{
+ win_T *old_curwin = curwin;
+
/* For Win32 mch_breakcheck() does not check for input, do it here. */
# if defined(WIN32) && defined(FEAT_JOB_CHANNEL)
channel_handle_events(FALSE);
@@ -6324,6 +6326,11 @@
/* Check if any jobs have ended. */
job_check_ended();
# endif
+
+ /* If the current window changed we need to bail out of the waiting loop.
+ * E.g. when a job exit callback closes the terminal window. */
+ if (curwin != old_curwin)
+ ins_char_typebuf(K_IGNORE);
}
#endif