# HG changeset patch # User Jan D # Date 1278150225 -7200 # Node ID 69cc7cbe898bb134c84af79e32343e770ecf4223 # Parent 1b5ca039f5f2e0f38b5ab663b5de977e3125e805# Parent 35d06d80fc6137458faee4cbea42c727478e9336 Fix hang on menubar press outside items (Bug#6499). * xmenu.c (x_activate_menubar): Send Press/Release for Gtk+ to avoid grab on just Press (Bug#6499). diff -r 1b5ca039f5f2 -r 69cc7cbe898b src/ChangeLog --- a/src/ChangeLog Fri Jul 02 12:35:08 2010 -0400 +++ b/src/ChangeLog Sat Jul 03 11:43:45 2010 +0200 @@ -1,3 +1,8 @@ +2010-07-03 Jan Djärv + + * xmenu.c (x_activate_menubar): Send Press/Release for Gtk+ to avoid + grab on just Press (Bug#6499). + 2010-07-02 Chong Yidong * frame.c (Qtooltip): New var. diff -r 1b5ca039f5f2 -r 69cc7cbe898b src/xmenu.c --- a/src/xmenu.c Fri Jul 02 12:35:08 2010 -0400 +++ b/src/xmenu.c Sat Jul 03 11:43:45 2010 +0200 @@ -684,6 +684,14 @@ 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;