Prevent timers from messing up TTY menus
* src/term.c (tty_menu_activate): Inhibit redisplay for as long as the TTY menu is open. (Bug#21530)
This commit is contained in:
parent
9fa9bc6a32
commit
58ecdad0b0
1 changed files with 7 additions and 0 deletions
|
@ -3117,6 +3117,7 @@ tty_menu_activate (tty_menu *menu, int *pane, int *selidx,
|
|||
Lisp_Object selectface;
|
||||
int first_item = 0;
|
||||
int col, row;
|
||||
Lisp_Object prev_inhibit_redisplay = Vinhibit_redisplay;
|
||||
USE_SAFE_ALLOCA;
|
||||
|
||||
/* Don't allow non-positive x0 and y0, lest the menu will wrap
|
||||
|
@ -3159,6 +3160,11 @@ tty_menu_activate (tty_menu *menu, int *pane, int *selidx,
|
|||
buffers_num_deleted = 1;
|
||||
}
|
||||
|
||||
/* Inhibit redisplay for as long as the menu is active, to avoid
|
||||
messing the screen if some timer calls sit-for or a similar
|
||||
function. */
|
||||
Vinhibit_redisplay = Qt;
|
||||
|
||||
/* Force update of the current frame, so that the desired and the
|
||||
current matrices are identical. */
|
||||
update_frame_with_menu (sf, -1, -1);
|
||||
|
@ -3349,6 +3355,7 @@ tty_menu_activate (tty_menu *menu, int *pane, int *selidx,
|
|||
if (!kbd_buffer_events_waiting ())
|
||||
clear_input_pending ();
|
||||
SAFE_FREE ();
|
||||
Vinhibit_redisplay = prev_inhibit_redisplay;
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue