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 */
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. */
mw->menu.cursor_shape,
event->time) == Success)
{
- if (! GRAB_KEYBOARD
+ if (!lucid__menu_grab_keyboard
|| XtGrabKeyboard ((Widget)mw, False, GrabModeAsync,
GrabModeAsync, event->time) == Success)
{
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