diff options
author | Jan Djärv <jan.h.d@swipnet.se> | 2002-04-22 18:27:03 +0000 |
---|---|---|
committer | Jan Djärv <jan.h.d@swipnet.se> | 2002-04-22 18:27:03 +0000 |
commit | 44e6d651228635d37cd503442a2c006eafe717a6 (patch) | |
tree | 9a489ac782182613b17c6ff35b44c8349a0609ed /oldXMenu | |
parent | f332ce9d13180663abb052995b3e351503bd672f (diff) | |
download | emacs-44e6d651228635d37cd503442a2c006eafe717a6.tar.gz |
Add calls to GrabKeyboard to remove strange
interactions with window managers that steal keypresses.
Diffstat (limited to 'oldXMenu')
-rw-r--r-- | oldXMenu/Activate.c | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/oldXMenu/Activate.c b/oldXMenu/Activate.c index 2c36cc85033..5196d0ccc12 100644 --- a/oldXMenu/Activate.c +++ b/oldXMenu/Activate.c @@ -1,4 +1,4 @@ -/* $Header: /gd/gnu/cvsroot/emacs/oldXMenu/Activate.c,v 1.2 2000/01/27 15:31:20 gerd Exp $ */ +/* $Header: /cvsroot/emacs//emacs/oldXMenu/Activate.c,v 1.3 2000/07/21 14:36:24 gerd Exp $ */ /* Copyright Massachusetts Institute of Technology 1985 */ #include "copyright.h" @@ -83,6 +83,9 @@ #include <config.h> #include "XMenuInt.h" +/* For debug, set this to 0 to not grab the keyboard on menu popup */ +int x_menu_grab_keyboard = 1; + int XMenuActivate(display, menu, p_num, s_num, x_pos, y_pos, event_mask, data, help_callback) @@ -225,6 +228,18 @@ XMenuActivate(display, menu, p_num, s_num, x_pos, y_pos, event_mask, data, menu->mouse_cursor, CurrentTime ); + if (status == Success && x_menu_grab_keyboard) + { + status = XGrabKeyboard (display, + menu->parent, + False, + GrabModeAsync, + GrabModeAsync, + CurrentTime); + if (status != Success) + XUngrabPointer(display, CurrentTime); + } + if (status == _X_FAILURE) { _XMErrorCode = XME_GRAB_MOUSE; return(XM_FAILURE); @@ -465,6 +480,7 @@ XMenuActivate(display, menu, p_num, s_num, x_pos, y_pos, event_mask, data, * Ungrab the mouse. */ XUngrabPointer(display, CurrentTime); + XUngrabKeyboard(display, CurrentTime); /* * Restore bits under where the menu was if we managed |