From: Lars Ingebrigtsen Date: Tue, 21 Jun 2022 10:15:11 +0000 (+0200) Subject: Make Lucid menus work from the keyboard also when uninstalled X-Git-Tag: emacs-29.0.90~1447^2~1572 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=649b43d20cf75e61fab289f99d20e98b035d5a9a;p=emacs.git Make Lucid menus work from the keyboard also when uninstalled * lwlib/xlwmenu.c (ungrab_all, pop_up_menu): Use it. * src/keyboard.c (syms_of_keyboard): New variable (bug#46990). --- diff --git a/lwlib/xlwmenu.c b/lwlib/xlwmenu.c index ace5141cdbc..f0625982cf7 100644 --- a/lwlib/xlwmenu.c +++ b/lwlib/xlwmenu.c @@ -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; /* 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) { diff --git a/src/keyboard.c b/src/keyboard.c index e62b2e56d3d..c41727d6c6e 100644 --- a/src/keyboard.c +++ b/src/keyboard.c @@ -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