summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/xfns.c23
-rw-r--r--src/xterm.c28
2 files changed, 28 insertions, 23 deletions
diff --git a/src/xfns.c b/src/xfns.c
index 06a0d4728cf..27bca5523cc 100644
--- a/src/xfns.c
+++ b/src/xfns.c
@@ -8243,29 +8243,6 @@ x_hide_tip (bool delete)
else
x_make_frame_invisible (XFRAME (tip_frame));
-#ifdef USE_LUCID
- /* Bloodcurdling hack alert: The Lucid menu bar widget's
- redisplay procedure is not called when a tip frame over
- menu items is unmapped. Redisplay the menu manually... */
- {
- Widget w;
- struct frame *f = SELECTED_FRAME ();
-
- if (FRAME_X_P (f) && FRAME_LIVE_P (f))
- {
- w = f->output_data.x->menubar_widget;
-
- if (!DoesSaveUnders (FRAME_DISPLAY_INFO (f)->screen)
- && w != NULL)
- {
- block_input ();
- xlwmenu_redisplay (w);
- unblock_input ();
- }
- }
- }
-#endif /* USE_LUCID */
-
was_open = Qt;
}
else
diff --git a/src/xterm.c b/src/xterm.c
index ea86b7f8033..4baaaf9ee8d 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -14797,6 +14797,34 @@ handle_one_xevent (struct x_display_info *dpyinfo,
{
bool visible = FRAME_VISIBLE_P (f);
+#ifdef USE_LUCID
+ /* Bloodcurdling hack alert: The Lucid menu bar widget's
+ redisplay procedure is not called when a tip frame over
+ menu items is unmapped. Redisplay the menu manually... */
+ if (FRAME_TOOLTIP_P (f) && popup_activated ())
+ {
+ Widget w;
+ Lisp_Object tail, frame;
+ struct frame *f1;
+
+ FOR_EACH_FRAME (tail, frame)
+ {
+ if (!FRAME_X_P (XFRAME (frame)))
+ continue;
+
+ f1 = XFRAME (frame);
+
+ if (FRAME_LIVE_P (f1))
+ {
+ w = FRAME_X_OUTPUT (f1)->menubar_widget;
+
+ if (w && !DoesSaveUnders (FRAME_DISPLAY_INFO (f1)->screen))
+ xlwmenu_redisplay (w);
+ }
+ }
+ }
+#endif /* USE_LUCID */
+
/* While a frame is unmapped, display generation is
disabled; you don't want to spend time updating a
display that won't ever be seen. */