* src/dispnew.c (sit_for): Fix bug#45292
When reading, prefer staying in the selected-window over preserving the current-buffer.
This commit is contained in:
parent
b68d52c81b
commit
ccb3efffc5
1 changed files with 9 additions and 0 deletions
|
@ -6057,6 +6057,8 @@ sit_for (Lisp_Object timeout, bool reading, int display_option)
|
|||
intmax_t sec;
|
||||
int nsec;
|
||||
bool do_display = display_option > 0;
|
||||
bool curbuf_eq_winbuf
|
||||
= (current_buffer == XBUFFER (XWINDOW (selected_window)->contents));
|
||||
|
||||
swallow_events (do_display);
|
||||
|
||||
|
@ -6111,6 +6113,13 @@ sit_for (Lisp_Object timeout, bool reading, int display_option)
|
|||
wait_reading_process_output (sec, nsec, reading ? -1 : 1, do_display,
|
||||
Qnil, NULL, 0);
|
||||
|
||||
if (reading && curbuf_eq_winbuf)
|
||||
/* Timers and process filters/sentinels may have changed the selected
|
||||
window (e.g. in response to a connection from emacsclient), in which
|
||||
case we should follow it (unless we weren't in the selected-window's
|
||||
buffer to start with). */
|
||||
set_buffer_internal (XBUFFER (XWINDOW (selected_window)->contents));
|
||||
|
||||
return detect_input_pending () ? Qnil : Qt;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue