aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorChong Yidong2008-07-30 13:57:56 +0000
committerChong Yidong2008-07-30 13:57:56 +0000
commitdf7591cb86852657628c92c39a36597285a229c7 (patch)
tree6db959b3c448bf1a2b02b107072e4e5e7edaed5d /src
parentbb08f2900cf5f80f734788bb15143d6daecd50e5 (diff)
downloademacs-df7591cb86852657628c92c39a36597285a229c7.tar.gz
emacs-df7591cb86852657628c92c39a36597285a229c7.zip
(menu_nav_ended): Remove.
(create_menus): Remove signal connect for menu_nav_ended. (create_menus): Connect selection-done to menu_nav_ended.
Diffstat (limited to 'src')
-rw-r--r--src/gtkutil.c46
1 files changed, 7 insertions, 39 deletions
diff --git a/src/gtkutil.c b/src/gtkutil.c
index 30735890143..fedfb8fa0df 100644
--- a/src/gtkutil.c
+++ b/src/gtkutil.c
@@ -2038,34 +2038,6 @@ xg_create_one_menuitem (item, f, select_cb, highlight_cb, cl_data, group)
2038 return w; 2038 return w;
2039} 2039}
2040 2040
2041/* Callback called when keyboard traversal (started by x-menu-bar-open) ends.
2042 WMENU is the menu for which traversal has been done. DATA points to the
2043 frame for WMENU. We must release grabs, some bad interaction between GTK
2044 and Emacs makes the menus keep the grabs. */
2045
2046static void
2047menu_nav_ended (wmenu, data)
2048 GtkMenuShell *wmenu;
2049 gpointer data;
2050{
2051 FRAME_PTR f = (FRAME_PTR) data;
2052
2053 if (FRAME_X_OUTPUT (f)->menubar_widget)
2054 {
2055 GtkMenuShell *w = GTK_MENU_SHELL (FRAME_X_OUTPUT (f)->menubar_widget);
2056 Display *dpy = FRAME_X_DISPLAY (f);
2057
2058 BLOCK_INPUT;
2059 gtk_menu_shell_deactivate (w);
2060 gtk_menu_shell_deselect (w);
2061
2062 XUngrabKeyboard (dpy, CurrentTime);
2063 XUngrabPointer (dpy, CurrentTime);
2064 UNBLOCK_INPUT;
2065 }
2066}
2067
2068
2069static GtkWidget *create_menus P_ ((widget_value *, FRAME_PTR, GCallback, 2041static GtkWidget *create_menus P_ ((widget_value *, FRAME_PTR, GCallback,
2070 GCallback, GCallback, int, int, int, 2042 GCallback, GCallback, int, int, int,
2071 GtkWidget *, xg_menu_cb_data *, char *)); 2043 GtkWidget *, xg_menu_cb_data *, char *));
@@ -2131,12 +2103,6 @@ create_menus (data, f, select_cb, deactivate_cb, highlight_cb,
2131 } 2103 }
2132 else wmenu = gtk_menu_bar_new (); 2104 else wmenu = gtk_menu_bar_new ();
2133 2105
2134 /* Fix up grabs after keyboard traversal ends. */
2135 g_signal_connect (G_OBJECT (wmenu),
2136 "selection-done",
2137 G_CALLBACK (menu_nav_ended),
2138 f);
2139
2140 /* Put cl_data on the top menu for easier access. */ 2106 /* Put cl_data on the top menu for easier access. */
2141 cl_data = make_cl_data (cl_data, f, highlight_cb); 2107 cl_data = make_cl_data (cl_data, f, highlight_cb);
2142 g_object_set_data (G_OBJECT (wmenu), XG_FRAME_DATA, (gpointer)cl_data); 2108 g_object_set_data (G_OBJECT (wmenu), XG_FRAME_DATA, (gpointer)cl_data);
@@ -2356,7 +2322,7 @@ xg_destroy_widgets (list)
2356 2322
2357static void 2323static void
2358xg_update_menubar (menubar, f, list, iter, pos, val, 2324xg_update_menubar (menubar, f, list, iter, pos, val,
2359 select_cb, highlight_cb, cl_data) 2325 select_cb, deactivate_cb, highlight_cb, cl_data)
2360 GtkWidget *menubar; 2326 GtkWidget *menubar;
2361 FRAME_PTR f; 2327 FRAME_PTR f;
2362 GList **list; 2328 GList **list;
@@ -2364,6 +2330,7 @@ xg_update_menubar (menubar, f, list, iter, pos, val,
2364 int pos; 2330 int pos;
2365 widget_value *val; 2331 widget_value *val;
2366 GCallback select_cb; 2332 GCallback select_cb;
2333 GCallback deactivate_cb;
2367 GCallback highlight_cb; 2334 GCallback highlight_cb;
2368 xg_menu_cb_data *cl_data; 2335 xg_menu_cb_data *cl_data;
2369{ 2336{
@@ -2381,7 +2348,7 @@ xg_update_menubar (menubar, f, list, iter, pos, val,
2381 else if (! iter && val) 2348 else if (! iter && val)
2382 { 2349 {
2383 /* Item(s) added. Add all new items in one call. */ 2350 /* Item(s) added. Add all new items in one call. */
2384 create_menus (val, f, select_cb, 0, highlight_cb, 2351 create_menus (val, f, select_cb, deactivate_cb, highlight_cb,
2385 0, 1, 0, menubar, cl_data, 0); 2352 0, 1, 0, menubar, cl_data, 0);
2386 2353
2387 /* All updated. */ 2354 /* All updated. */
@@ -2488,7 +2455,8 @@ xg_update_menubar (menubar, f, list, iter, pos, val,
2488 /* Create a possibly empty submenu for menu bar items, since some 2455 /* Create a possibly empty submenu for menu bar items, since some
2489 themes don't highlight items correctly without it. */ 2456 themes don't highlight items correctly without it. */
2490 GtkWidget *submenu = create_menus (NULL, f, 2457 GtkWidget *submenu = create_menus (NULL, f,
2491 select_cb, NULL, highlight_cb, 2458 select_cb, deactivate_cb,
2459 highlight_cb,
2492 0, 0, 0, 0, cl_data, 0); 2460 0, 0, 0, 0, cl_data, 0);
2493 gtk_widget_set_name (w, MENU_ITEM_NAME); 2461 gtk_widget_set_name (w, MENU_ITEM_NAME);
2494 gtk_menu_shell_insert (GTK_MENU_SHELL (menubar), w, pos); 2462 gtk_menu_shell_insert (GTK_MENU_SHELL (menubar), w, pos);
@@ -2526,7 +2494,7 @@ xg_update_menubar (menubar, f, list, iter, pos, val,
2526 2494
2527 /* Update the rest of the menu bar. */ 2495 /* Update the rest of the menu bar. */
2528 xg_update_menubar (menubar, f, list, iter, pos, val, 2496 xg_update_menubar (menubar, f, list, iter, pos, val,
2529 select_cb, highlight_cb, cl_data); 2497 select_cb, deactivate_cb, highlight_cb, cl_data);
2530} 2498}
2531 2499
2532/* Update the menu item W so it corresponds to VAL. 2500/* Update the menu item W so it corresponds to VAL.
@@ -2831,7 +2799,7 @@ xg_modify_menubar_widgets (menubar, f, val, deep_p,
2831 XG_FRAME_DATA); 2799 XG_FRAME_DATA);
2832 2800
2833 xg_update_menubar (menubar, f, &list, list, 0, val->contents, 2801 xg_update_menubar (menubar, f, &list, list, 0, val->contents,
2834 select_cb, highlight_cb, cl_data); 2802 select_cb, deactivate_cb, highlight_cb, cl_data);
2835 2803
2836 if (deep_p) 2804 if (deep_p)
2837 { 2805 {