mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-02-20 07:00:31 -08:00
Fix infinite looping around Haiku menus
* src/haikumenu.c (haiku_menu_show): Block SIGIO around menu event loop. * src/haikuterm.c (haiku_read_socket): Flush tooltip frames after resize.
This commit is contained in:
parent
a2e56a8d65
commit
b5cd9343ae
2 changed files with 8 additions and 0 deletions
|
|
@ -422,11 +422,13 @@ haiku_menu_show (struct frame *f, int x, int y, int menuflags,
|
|||
BView_convert_to_screen (view, &x, &y);
|
||||
unblock_input ();
|
||||
|
||||
unrequest_sigio ();
|
||||
popup_activated_p++;
|
||||
menu_item_selection = BMenu_run (menu, x, y, haiku_menu_show_help,
|
||||
block_input, unblock_input,
|
||||
haiku_process_pending_signals_for_menu, NULL);
|
||||
popup_activated_p--;
|
||||
request_sigio ();
|
||||
|
||||
FRAME_DISPLAY_INFO (f)->grabbed = 0;
|
||||
|
||||
|
|
|
|||
|
|
@ -3202,6 +3202,11 @@ haiku_read_socket (struct terminal *terminal, struct input_event *hold_quit)
|
|||
FRAME_PIXEL_HEIGHT (f) = height;
|
||||
|
||||
haiku_clear_under_internal_border (f);
|
||||
|
||||
/* Flush the frame and flip buffers here. It is
|
||||
necessary for tooltips displayed inside menus, as
|
||||
redisplay cannot happen. */
|
||||
haiku_flush (f);
|
||||
continue;
|
||||
}
|
||||
|
||||
|
|
@ -4438,6 +4443,7 @@ haiku_clear_under_internal_border (struct frame *f)
|
|||
: INTERNAL_BORDER_FACE_ID));
|
||||
struct face *face = FACE_FROM_ID_OR_NULL (f, face_id);
|
||||
void *view = FRAME_HAIKU_VIEW (f);
|
||||
|
||||
block_input ();
|
||||
BView_draw_lock (view, true, 0, 0, FRAME_PIXEL_WIDTH (f),
|
||||
FRAME_PIXEL_HEIGHT (f));
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue