]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix hang for mouse press on menubar but not on an item (Bug#6499).
authorJan D <jan.h.d@swipnet.se>
Sat, 3 Jul 2010 09:38:44 +0000 (11:38 +0200)
committerJan D <jan.h.d@swipnet.se>
Sat, 3 Jul 2010 09:38:44 +0000 (11:38 +0200)
* xmenu.c (x_activate_menubar): Send Press/Release for Gtk+ to avoid
grab on just Press (Bug#6499).

src/ChangeLog
src/xmenu.c

index 77581160a0e1e6200ea9a2acb43f9c7512ff6fb5..59f953bcc69faea5dbc56d784ffab243d9ba9a75 100644 (file)
@@ -1,3 +1,8 @@
+2010-07-03  Jan Djärv  <jan.h.d@swipnet.se>
+
+       * xmenu.c (x_activate_menubar): Send Press/Release for Gtk+ to avoid
+       grab on just Press (Bug#6499).
+
 2010-07-02  Chong Yidong  <cyd@stupidchicken.com>
 
        * frame.c (Qtooltip): New var.
index 64e55b7413c3a3c45415cdc61dab8da9d6ee4170..a9158b750e366c5c062104e25a038fb29048cd9e 100644 (file)
@@ -684,6 +684,14 @@ x_activate_menubar (f)
   set_frame_menubar (f, 0, 1);
   BLOCK_INPUT;
 #ifdef USE_GTK
+  /* If we click outside any menu item, the menu bar still grabs.
+     So we send Press and the Release.  If outside, grab is released.
+     If on a menu item, it is popped up normally.
+     PutBack is like a stack, so we put back in reverse order.  */
+  f->output_data.x->saved_menu_event->type = ButtonRelease;
+  XPutBackEvent (f->output_data.x->display_info->display,
+                 f->output_data.x->saved_menu_event);
+  f->output_data.x->saved_menu_event->type = ButtonPress;
   XPutBackEvent (f->output_data.x->display_info->display,
                  f->output_data.x->saved_menu_event);
   popup_activated_flag = 1;