1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-02-06 15:41:27 -08:00

Clean up X Windows tooltip code

* src/xfns.c (x_hide_tip): Remove "bloodcurdling hack".
* src/xterm.c (handle_one_xevent): Add a better version here
instead.  The code is unlikely to be hit as well, since tooltip
frames are typically deleted, not just hidden.
This commit is contained in:
Po Lu 2022-05-01 09:15:52 +08:00
parent b2fdf78fd9
commit 61d6d43fe5
2 changed files with 28 additions and 23 deletions

View file

@ -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

View file

@ -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. */