aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJan Djärv2008-07-24 08:36:26 +0000
committerJan Djärv2008-07-24 08:36:26 +0000
commitd1c38b5722b1beec983b801a3fbd60b9483bceb5 (patch)
treec19c1706c74b75a1a46ba7083827dab63f799611
parentbd419dfa0788f5062a2c98ee9871ea2483874fde (diff)
downloademacs-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/ChangeLog9
-rw-r--r--src/gtkutil.c53
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 @@
12008-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
12008-07-23 Jason Rumney <jasonr@gnu.org> 102008-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
2146static void
2147menu_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
2169static GtkWidget *create_menus P_ ((widget_value *, FRAME_PTR, GCallback, 2142static 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
2457static void 2424static void
2458xg_update_menubar (menubar, f, list, iter, pos, val, 2425xg_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 {