Commit 42ffd097 authored by Jan Djärv's avatar Jan Djärv

(menu_nav_ended): Revert change from 2008-07-24.

(create_menus): Connect selection-done to menu_nav_ended.
parent 01b9ed77
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);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment