diff options
| author | Chong Yidong | 2008-07-30 13:57:56 +0000 |
|---|---|---|
| committer | Chong Yidong | 2008-07-30 13:57:56 +0000 |
| commit | df7591cb86852657628c92c39a36597285a229c7 (patch) | |
| tree | 6db959b3c448bf1a2b02b107072e4e5e7edaed5d /src | |
| parent | bb08f2900cf5f80f734788bb15143d6daecd50e5 (diff) | |
| download | emacs-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.c | 46 |
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 | |||
| 2046 | static void | ||
| 2047 | menu_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 | |||
| 2069 | static GtkWidget *create_menus P_ ((widget_value *, FRAME_PTR, GCallback, | 2041 | static 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 | ||
| 2357 | static void | 2323 | static void |
| 2358 | xg_update_menubar (menubar, f, list, iter, pos, val, | 2324 | xg_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 | { |