mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-01-20 11:33:09 -08:00
(menu_nav_ended): Revert change from 2008-07-24.
(create_menus): Connect selection-done to menu_nav_ended.
This commit is contained in:
parent
01b9ed77ee
commit
42ffd097cf
2 changed files with 39 additions and 0 deletions
|
|
@ -1,3 +1,8 @@
|
|||
2008-07-28 Jan Djärv <jan.h.d@swipnet.se>
|
||||
|
||||
* gtkutil.c (menu_nav_ended): Revert change from 2008-07-24.
|
||||
(create_menus): Connect selection-done to menu_nav_ended.
|
||||
|
||||
2008-07-27 Adrian Robert <Adrian.B.Robert@gmail.com>
|
||||
|
||||
* nsfns.m (x-create-frame): Add copy of parms argument to beginning.
|
||||
|
|
|
|||
|
|
@ -2139,6 +2139,34 @@ xg_create_one_menuitem (item, f, select_cb, highlight_cb, cl_data, group)
|
|||
return w;
|
||||
}
|
||||
|
||||
/* Callback called when keyboard traversal (started by x-menu-bar-open) ends.
|
||||
WMENU is the menu for which traversal has been done. DATA points to the
|
||||
frame for WMENU. We must release grabs, some bad interaction between GTK
|
||||
and Emacs makes the menus keep the grabs. */
|
||||
|
||||
static void
|
||||
menu_nav_ended (wmenu, data)
|
||||
GtkMenuShell *wmenu;
|
||||
gpointer data;
|
||||
{
|
||||
FRAME_PTR f = (FRAME_PTR) data;
|
||||
|
||||
if (FRAME_X_OUTPUT (f)->menubar_widget)
|
||||
{
|
||||
GtkMenuShell *w = GTK_MENU_SHELL (FRAME_X_OUTPUT (f)->menubar_widget);
|
||||
Display *dpy = FRAME_X_DISPLAY (f);
|
||||
|
||||
BLOCK_INPUT;
|
||||
gtk_menu_shell_deactivate (w);
|
||||
gtk_menu_shell_deselect (w);
|
||||
|
||||
XUngrabKeyboard (dpy, CurrentTime);
|
||||
XUngrabPointer (dpy, CurrentTime);
|
||||
UNBLOCK_INPUT;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static GtkWidget *create_menus P_ ((widget_value *, FRAME_PTR, GCallback,
|
||||
GCallback, GCallback, int, int, int,
|
||||
GtkWidget *, xg_menu_cb_data *, char *));
|
||||
|
|
@ -2204,6 +2232,12 @@ create_menus (data, f, select_cb, deactivate_cb, highlight_cb,
|
|||
}
|
||||
else wmenu = gtk_menu_bar_new ();
|
||||
|
||||
/* Fix up grabs after keyboard traversal ends. */
|
||||
g_signal_connect (G_OBJECT (wmenu),
|
||||
"selection-done",
|
||||
G_CALLBACK (menu_nav_ended),
|
||||
f);
|
||||
|
||||
/* Put cl_data on the top menu for easier access. */
|
||||
cl_data = make_cl_data (cl_data, f, highlight_cb);
|
||||
g_object_set_data (G_OBJECT (wmenu), XG_FRAME_DATA, (gpointer)cl_data);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue