From 29bf6e64fdad648642a79915d63fe543fdeaff8b Mon Sep 17 00:00:00 2001 From: Po Lu Date: Mon, 18 Apr 2022 00:50:15 +0000 Subject: Fix Haiku menu bars when redisplay happens immediately after activation * src/haiku_support.cc (MessageReceived): Make `REPLAY_MENU_BAR' messages synchronous. (be_replay_menu_bar_event): Return whether or not the menu bar really opened. * src/haiku_support.h: Update prototypes. * src/haikumenu.c (haiku_activate_menubar): Immediately activate menu bar after replaying event. --- src/haikumenu.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'src/haikumenu.c') diff --git a/src/haikumenu.c b/src/haikumenu.c index 46dde6496bb..54ee3f160f6 100644 --- a/src/haikumenu.c +++ b/src/haikumenu.c @@ -783,11 +783,17 @@ haiku_activate_menubar (struct frame *f) if (FRAME_OUTPUT_DATA (f)->saved_menu_event) { block_input (); - be_replay_menu_bar_event (FRAME_HAIKU_MENU_BAR (f), - FRAME_OUTPUT_DATA (f)->saved_menu_event); + rc = be_replay_menu_bar_event (FRAME_HAIKU_MENU_BAR (f), + FRAME_OUTPUT_DATA (f)->saved_menu_event); xfree (FRAME_OUTPUT_DATA (f)->saved_menu_event); FRAME_OUTPUT_DATA (f)->saved_menu_event = NULL; unblock_input (); + + if (!rc) + return; + + FRAME_OUTPUT_DATA (f)->menu_bar_open_p = 1; + popup_activated_p += 1; } else { -- cgit v1.2.1