]> git.eshelyaron.com Git - emacs.git/commitdiff
Further fixes to menu event processing on no-toolkit builds
authorPo Lu <luangruo@yahoo.com>
Sat, 22 Oct 2022 12:15:22 +0000 (20:15 +0800)
committerPo Lu <luangruo@yahoo.com>
Sat, 22 Oct 2022 12:21:55 +0000 (20:21 +0800)
* src/xdisp.c (note_mouse_highlight): Return if a popup is
activated under the no-toolkit build as well.
* src/xmenu.c (pop_down_menu): Clear popup_activated_flag when
not on MS-DOS.
(x_menu_show): Set popup_activated_flag under X.

src/xdisp.c
src/xmenu.c

index e390de6a336ba0f30411705a904d7d0c41902ce7..1f7ac269e4ecc06d802336cf101b95c41e56a6cd 100644 (file)
@@ -34912,7 +34912,7 @@ note_mouse_highlight (struct frame *f, int x, int y)
   struct buffer *b;
 
   /* When a menu is active, don't highlight because this looks odd.  */
-#if defined (USE_X_TOOLKIT) || (defined (USE_GTK) && !defined (HAVE_PGTK)) || defined (HAVE_NS) || defined (MSDOS)
+#if defined (HAVE_X_WINDOWS) || defined (HAVE_NS) || defined (MSDOS)
   if (popup_activated ())
     return;
 #endif
index d9660a6910f3e88cc2fa6fb67f6fed96f84abc00..756842c2feffa80fc7ad847b11b0afa308bae549 100644 (file)
@@ -2540,6 +2540,8 @@ pop_down_menu (void *arg)
     }
 #endif
 
+  /* Decrement the popup_activated_flag.  */
+  popup_activated_flag = 0;
 #endif /* HAVE_X_WINDOWS */
 
   unblock_input ();
@@ -2791,6 +2793,12 @@ x_menu_show (struct frame *f, int x, int y, int menuflags,
     }
 #endif
 
+#ifdef HAVE_X_WINDOWS
+  /* Increment the popup flag; this prevents nested popups from being
+     displayed by user Lisp code in help-echo callbacks, and also
+     prevents mouse face from being displayed.  */
+  popup_activated_flag = 1;
+#endif
   status = XMenuActivate (FRAME_X_DISPLAY (f), menu, &pane, &selidx,
                           x, y, ButtonReleaseMask, &datap,
                           menu_help_callback);