diff options
| author | Jan Djärv | 2008-07-24 08:36:26 +0000 |
|---|---|---|
| committer | Jan Djärv | 2008-07-24 08:36:26 +0000 |
| commit | d1c38b5722b1beec983b801a3fbd60b9483bceb5 (patch) | |
| tree | c19c1706c74b75a1a46ba7083827dab63f799611 | |
| parent | bd419dfa0788f5062a2c98ee9871ea2483874fde (diff) | |
| download | emacs-d1c38b5722b1beec983b801a3fbd60b9483bceb5.tar.gz emacs-d1c38b5722b1beec983b801a3fbd60b9483bceb5.zip | |
(xg_get_font_name): Cast w to GTK_FONT_SELECTION_DIALOG.
(menu_nav_ended): Remove.
(create_menus): Remove signal connect for menu_nav_ended.
(xg_update_menubar): Also take deactivate_cb as parameter, pass it to
create_menus.
(xg_modify_menubar_widgets): Pass deactivate_cb to xg_update_menubar.
| -rw-r--r-- | src/ChangeLog | 9 | ||||
| -rw-r--r-- | src/gtkutil.c | 53 |
2 files changed, 20 insertions, 42 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index 005540b4a79..c36d94d1d24 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,3 +1,12 @@ | |||
| 1 | 2008-07-24 Jan Djärv <jan.h.d@swipnet.se> | ||
| 2 | |||
| 3 | * gtkutil.c (xg_get_font_name): Cast w to GTK_FONT_SELECTION_DIALOG. | ||
| 4 | (menu_nav_ended): Remove. | ||
| 5 | (create_menus): Remove signal connect for menu_nav_ended. | ||
| 6 | (xg_update_menubar): Also take deactivate_cb as parameter, pass it to | ||
| 7 | create_menus. | ||
| 8 | (xg_modify_menubar_widgets): Pass deactivate_cb to xg_update_menubar. | ||
| 9 | |||
| 1 | 2008-07-23 Jason Rumney <jasonr@gnu.org> | 10 | 2008-07-23 Jason Rumney <jasonr@gnu.org> |
| 2 | 11 | ||
| 3 | * w32font.c (w32_enumfont_pattern_entity): Return height consistent | 12 | * w32font.c (w32_enumfont_pattern_entity): Return height consistent |
diff --git a/src/gtkutil.c b/src/gtkutil.c index 578e9737f39..7e2a05eed89 100644 --- a/src/gtkutil.c +++ b/src/gtkutil.c | |||
| @@ -1648,7 +1648,8 @@ xg_get_font_name (f, default_name) | |||
| 1648 | 1648 | ||
| 1649 | w = gtk_font_selection_dialog_new ("Pick a font"); | 1649 | w = gtk_font_selection_dialog_new ("Pick a font"); |
| 1650 | if (default_name) | 1650 | if (default_name) |
| 1651 | gtk_font_selection_dialog_set_font_name (w, default_name); | 1651 | gtk_font_selection_dialog_set_font_name (GTK_FONT_SELECTION_DIALOG (w), |
| 1652 | default_name); | ||
| 1652 | 1653 | ||
| 1653 | xg_set_screen (w, f); | 1654 | xg_set_screen (w, f); |
| 1654 | gtk_widget_set_name (w, "emacs-fontdialog"); | 1655 | gtk_widget_set_name (w, "emacs-fontdialog"); |
| @@ -1692,9 +1693,9 @@ xg_get_font_name (f, default_name) | |||
| 1692 | Menu functions. | 1693 | Menu functions. |
| 1693 | ***********************************************************************/ | 1694 | ***********************************************************************/ |
| 1694 | 1695 | ||
| 1695 | /* The name of menu items that can be used for citomization. Since GTK | 1696 | /* The name of menu items that can be used for customization. Since GTK |
| 1696 | RC files are very crude and primitive, we have to set this on all | 1697 | RC files are very crude and primitive, we have to set this on all |
| 1697 | menu item names so a user can easily cutomize menu items. */ | 1698 | menu item names so a user can easily customize menu items. */ |
| 1698 | 1699 | ||
| 1699 | #define MENU_ITEM_NAME "emacs-menuitem" | 1700 | #define MENU_ITEM_NAME "emacs-menuitem" |
| 1700 | 1701 | ||
| @@ -2138,34 +2139,6 @@ xg_create_one_menuitem (item, f, select_cb, highlight_cb, cl_data, group) | |||
| 2138 | return w; | 2139 | return w; |
| 2139 | } | 2140 | } |
| 2140 | 2141 | ||
| 2141 | /* Callback called when keyboard traversal (started by x-menu-bar-open) ends. | ||
| 2142 | WMENU is the menu for which traversal has been done. DATA points to the | ||
| 2143 | frame for WMENU. We must release grabs, some bad interaction between GTK | ||
| 2144 | and Emacs makes the menus keep the grabs. */ | ||
| 2145 | |||
| 2146 | static void | ||
| 2147 | menu_nav_ended (wmenu, data) | ||
| 2148 | GtkMenuShell *wmenu; | ||
| 2149 | gpointer data; | ||
| 2150 | { | ||
| 2151 | FRAME_PTR f = (FRAME_PTR) data; | ||
| 2152 | |||
| 2153 | if (FRAME_X_OUTPUT (f)->menubar_widget) | ||
| 2154 | { | ||
| 2155 | GtkMenuShell *w = GTK_MENU_SHELL (FRAME_X_OUTPUT (f)->menubar_widget); | ||
| 2156 | Display *dpy = FRAME_X_DISPLAY (f); | ||
| 2157 | |||
| 2158 | BLOCK_INPUT; | ||
| 2159 | gtk_menu_shell_deactivate (w); | ||
| 2160 | gtk_menu_shell_deselect (w); | ||
| 2161 | |||
| 2162 | XUngrabKeyboard (dpy, CurrentTime); | ||
| 2163 | XUngrabPointer (dpy, CurrentTime); | ||
| 2164 | UNBLOCK_INPUT; | ||
| 2165 | } | ||
| 2166 | } | ||
| 2167 | |||
| 2168 | |||
| 2169 | static GtkWidget *create_menus P_ ((widget_value *, FRAME_PTR, GCallback, | 2142 | static GtkWidget *create_menus P_ ((widget_value *, FRAME_PTR, GCallback, |
| 2170 | GCallback, GCallback, int, int, int, | 2143 | GCallback, GCallback, int, int, int, |
| 2171 | GtkWidget *, xg_menu_cb_data *, char *)); | 2144 | GtkWidget *, xg_menu_cb_data *, char *)); |
| @@ -2231,12 +2204,6 @@ create_menus (data, f, select_cb, deactivate_cb, highlight_cb, | |||
| 2231 | } | 2204 | } |
| 2232 | else wmenu = gtk_menu_bar_new (); | 2205 | else wmenu = gtk_menu_bar_new (); |
| 2233 | 2206 | ||
| 2234 | /* Fix up grabs after keyboard traversal ends. */ | ||
| 2235 | g_signal_connect (G_OBJECT (wmenu), | ||
| 2236 | "selection-done", | ||
| 2237 | G_CALLBACK (menu_nav_ended), | ||
| 2238 | f); | ||
| 2239 | |||
| 2240 | /* Put cl_data on the top menu for easier access. */ | 2207 | /* Put cl_data on the top menu for easier access. */ |
| 2241 | cl_data = make_cl_data (cl_data, f, highlight_cb); | 2208 | cl_data = make_cl_data (cl_data, f, highlight_cb); |
| 2242 | g_object_set_data (G_OBJECT (wmenu), XG_FRAME_DATA, (gpointer)cl_data); | 2209 | g_object_set_data (G_OBJECT (wmenu), XG_FRAME_DATA, (gpointer)cl_data); |
| @@ -2456,7 +2423,7 @@ xg_destroy_widgets (list) | |||
| 2456 | 2423 | ||
| 2457 | static void | 2424 | static void |
| 2458 | xg_update_menubar (menubar, f, list, iter, pos, val, | 2425 | xg_update_menubar (menubar, f, list, iter, pos, val, |
| 2459 | select_cb, highlight_cb, cl_data) | 2426 | select_cb, deactivate_cb, highlight_cb, cl_data) |
| 2460 | GtkWidget *menubar; | 2427 | GtkWidget *menubar; |
| 2461 | FRAME_PTR f; | 2428 | FRAME_PTR f; |
| 2462 | GList **list; | 2429 | GList **list; |
| @@ -2464,6 +2431,7 @@ xg_update_menubar (menubar, f, list, iter, pos, val, | |||
| 2464 | int pos; | 2431 | int pos; |
| 2465 | widget_value *val; | 2432 | widget_value *val; |
| 2466 | GCallback select_cb; | 2433 | GCallback select_cb; |
| 2434 | GCallback deactivate_cb; | ||
| 2467 | GCallback highlight_cb; | 2435 | GCallback highlight_cb; |
| 2468 | xg_menu_cb_data *cl_data; | 2436 | xg_menu_cb_data *cl_data; |
| 2469 | { | 2437 | { |
| @@ -2481,7 +2449,7 @@ xg_update_menubar (menubar, f, list, iter, pos, val, | |||
| 2481 | else if (! iter && val) | 2449 | else if (! iter && val) |
| 2482 | { | 2450 | { |
| 2483 | /* Item(s) added. Add all new items in one call. */ | 2451 | /* Item(s) added. Add all new items in one call. */ |
| 2484 | create_menus (val, f, select_cb, 0, highlight_cb, | 2452 | create_menus (val, f, select_cb, deactivate_cb, highlight_cb, |
| 2485 | 0, 1, 0, menubar, cl_data, 0); | 2453 | 0, 1, 0, menubar, cl_data, 0); |
| 2486 | 2454 | ||
| 2487 | /* All updated. */ | 2455 | /* All updated. */ |
| @@ -2588,7 +2556,8 @@ xg_update_menubar (menubar, f, list, iter, pos, val, | |||
| 2588 | /* Create a possibly empty submenu for menu bar items, since some | 2556 | /* Create a possibly empty submenu for menu bar items, since some |
| 2589 | themes don't highlight items correctly without it. */ | 2557 | themes don't highlight items correctly without it. */ |
| 2590 | GtkWidget *submenu = create_menus (NULL, f, | 2558 | GtkWidget *submenu = create_menus (NULL, f, |
| 2591 | select_cb, NULL, highlight_cb, | 2559 | select_cb, deactivate_cb, |
| 2560 | highlight_cb, | ||
| 2592 | 0, 0, 0, 0, cl_data, 0); | 2561 | 0, 0, 0, 0, cl_data, 0); |
| 2593 | gtk_widget_set_name (w, MENU_ITEM_NAME); | 2562 | gtk_widget_set_name (w, MENU_ITEM_NAME); |
| 2594 | gtk_menu_shell_insert (GTK_MENU_SHELL (menubar), w, pos); | 2563 | gtk_menu_shell_insert (GTK_MENU_SHELL (menubar), w, pos); |
| @@ -2626,7 +2595,7 @@ xg_update_menubar (menubar, f, list, iter, pos, val, | |||
| 2626 | 2595 | ||
| 2627 | /* Update the rest of the menu bar. */ | 2596 | /* Update the rest of the menu bar. */ |
| 2628 | xg_update_menubar (menubar, f, list, iter, pos, val, | 2597 | xg_update_menubar (menubar, f, list, iter, pos, val, |
| 2629 | select_cb, highlight_cb, cl_data); | 2598 | select_cb, deactivate_cb, highlight_cb, cl_data); |
| 2630 | } | 2599 | } |
| 2631 | 2600 | ||
| 2632 | /* Update the menu item W so it corresponds to VAL. | 2601 | /* Update the menu item W so it corresponds to VAL. |
| @@ -2931,7 +2900,7 @@ xg_modify_menubar_widgets (menubar, f, val, deep_p, | |||
| 2931 | XG_FRAME_DATA); | 2900 | XG_FRAME_DATA); |
| 2932 | 2901 | ||
| 2933 | xg_update_menubar (menubar, f, &list, list, 0, val->contents, | 2902 | xg_update_menubar (menubar, f, &list, list, 0, val->contents, |
| 2934 | select_cb, highlight_cb, cl_data); | 2903 | select_cb, deactivate_cb, highlight_cb, cl_data); |
| 2935 | 2904 | ||
| 2936 | if (deep_p) | 2905 | if (deep_p) |
| 2937 | { | 2906 | { |