(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.
This commit is contained in:
Jan Djärv 2008-07-24 08:36:26 +00:00
parent bd419dfa07
commit d1c38b5722
2 changed files with 20 additions and 42 deletions

View file

@ -1,3 +1,12 @@
2008-07-24 Jan Djärv <jan.h.d@swipnet.se>
* gtkutil.c (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.
2008-07-23 Jason Rumney <jasonr@gnu.org>
* w32font.c (w32_enumfont_pattern_entity): Return height consistent

View file

@ -1648,7 +1648,8 @@ xg_get_font_name (f, default_name)
w = gtk_font_selection_dialog_new ("Pick a font");
if (default_name)
gtk_font_selection_dialog_set_font_name (w, default_name);
gtk_font_selection_dialog_set_font_name (GTK_FONT_SELECTION_DIALOG (w),
default_name);
xg_set_screen (w, f);
gtk_widget_set_name (w, "emacs-fontdialog");
@ -1692,9 +1693,9 @@ xg_get_font_name (f, default_name)
Menu functions.
***********************************************************************/
/* The name of menu items that can be used for citomization. Since GTK
/* The name of menu items that can be used for customization. Since GTK
RC files are very crude and primitive, we have to set this on all
menu item names so a user can easily cutomize menu items. */
menu item names so a user can easily customize menu items. */
#define MENU_ITEM_NAME "emacs-menuitem"
@ -2138,34 +2139,6 @@ 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 *));
@ -2231,12 +2204,6 @@ 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);
@ -2456,7 +2423,7 @@ xg_destroy_widgets (list)
static void
xg_update_menubar (menubar, f, list, iter, pos, val,
select_cb, highlight_cb, cl_data)
select_cb, deactivate_cb, highlight_cb, cl_data)
GtkWidget *menubar;
FRAME_PTR f;
GList **list;
@ -2464,6 +2431,7 @@ xg_update_menubar (menubar, f, list, iter, pos, val,
int pos;
widget_value *val;
GCallback select_cb;
GCallback deactivate_cb;
GCallback highlight_cb;
xg_menu_cb_data *cl_data;
{
@ -2481,7 +2449,7 @@ xg_update_menubar (menubar, f, list, iter, pos, val,
else if (! iter && val)
{
/* Item(s) added. Add all new items in one call. */
create_menus (val, f, select_cb, 0, highlight_cb,
create_menus (val, f, select_cb, deactivate_cb, highlight_cb,
0, 1, 0, menubar, cl_data, 0);
/* All updated. */
@ -2588,7 +2556,8 @@ xg_update_menubar (menubar, f, list, iter, pos, val,
/* Create a possibly empty submenu for menu bar items, since some
themes don't highlight items correctly without it. */
GtkWidget *submenu = create_menus (NULL, f,
select_cb, NULL, highlight_cb,
select_cb, deactivate_cb,
highlight_cb,
0, 0, 0, 0, cl_data, 0);
gtk_widget_set_name (w, MENU_ITEM_NAME);
gtk_menu_shell_insert (GTK_MENU_SHELL (menubar), w, pos);
@ -2626,7 +2595,7 @@ xg_update_menubar (menubar, f, list, iter, pos, val,
/* Update the rest of the menu bar. */
xg_update_menubar (menubar, f, list, iter, pos, val,
select_cb, highlight_cb, cl_data);
select_cb, deactivate_cb, highlight_cb, cl_data);
}
/* Update the menu item W so it corresponds to VAL.
@ -2931,7 +2900,7 @@ xg_modify_menubar_widgets (menubar, f, val, deep_p,
XG_FRAME_DATA);
xg_update_menubar (menubar, f, &list, list, 0, val->contents,
select_cb, highlight_cb, cl_data);
select_cb, deactivate_cb, highlight_cb, cl_data);
if (deep_p)
{