]> git.eshelyaron.com Git - emacs.git/commitdiff
Make Lucid menus work from the keyboard also when uninstalled
authorLars Ingebrigtsen <larsi@gnus.org>
Tue, 21 Jun 2022 10:15:11 +0000 (12:15 +0200)
committerLars Ingebrigtsen <larsi@gnus.org>
Tue, 21 Jun 2022 10:15:11 +0000 (12:15 +0200)
* lwlib/xlwmenu.c (ungrab_all, pop_up_menu): Use it.

* src/keyboard.c (syms_of_keyboard): New variable (bug#46990).

lwlib/xlwmenu.c
src/keyboard.c

index ace5141cdbc0bb2523c87785839607be138ab3b2..f0625982cf710ea0ece6dc00461f82ef0ae75aaa 100644 (file)
@@ -245,11 +245,6 @@ WidgetClass xlwMenuWidgetClass = (WidgetClass) &xlwMenuClassRec;
 
 int submenu_destroyed;
 
-/* For debug, if installation-directory is non-nil this is not an installed
-   Emacs.   In that case we do not grab the keyboard to make it easier to
-   debug. */
-#define GRAB_KEYBOARD  (EQ (Vinstallation_directory, Qnil))
-
 static int next_release_must_exit;
 
 \f/* Utilities */
@@ -259,7 +254,8 @@ static void
 ungrab_all (Widget w, Time ungrabtime)
 {
   XtUngrabPointer (w, ungrabtime);
-  if (GRAB_KEYBOARD) XtUngrabKeyboard (w, ungrabtime);
+  if (!lucid__menu_grab_keyboard)
+    XtUngrabKeyboard (w, ungrabtime);
 }
 
 /* Like abort, but remove grabs from widget W before.  */
@@ -2721,7 +2717,7 @@ pop_up_menu (XlwMenuWidget mw, XButtonPressedEvent *event)
                      mw->menu.cursor_shape,
                      event->time) == Success)
     {
-      if (! GRAB_KEYBOARD
+      if (!lucid__menu_grab_keyboard
           || XtGrabKeyboard ((Widget)mw, False, GrabModeAsync,
                              GrabModeAsync, event->time) == Success)
         {
index e62b2e56d3d507ab37162cc2e206225ae7ec0778..c41727d6c6e4544e683aade4c54c38a0c4f9a207 100644 (file)
@@ -12648,6 +12648,15 @@ See also `pre-command-hook'.  */);
               doc: /* Non-nil means menu bar, specified Lucid style, needs to be recomputed.  */);
   Vlucid_menu_bar_dirty_flag = Qnil;
 
+#ifdef USE_LUCID
+  DEFVAR_BOOL ("lucid--menu-grab-keyboard",
+               lucid__menu_grab_keyboard,
+               doc: /* If non-nil, grab keyboard during menu operations.
+This is only relevant when using the Lucid X toolkit.  It can be
+convenient to disable this for debugging purposes.  */);
+  lucid__menu_grab_keyboard = true;
+#endif
+
   DEFVAR_LISP ("menu-bar-final-items", Vmenu_bar_final_items,
               doc: /* List of menu bar items to move to the end of the menu bar.
 The elements of the list are event types that may have menu bar