From 726881c2adbbdc8f722dc1fe0016326daf7e5c44 Mon Sep 17 00:00:00 2001 From: Vincent Sanders Date: Tue, 1 Feb 2011 23:11:29 +0000 Subject: gtk can have *only* a single accelerator group attached or it goes bang svn path=/trunk/netsurf/; revision=11598 --- gtk/menu.c | 13 +++---------- gtk/menu.h | 4 ++-- gtk/scaffolding.c | 12 ++++++++---- 3 files changed, 13 insertions(+), 16 deletions(-) (limited to 'gtk') diff --git a/gtk/menu.c b/gtk/menu.c index 99bfde997..f16cfee40 100644 --- a/gtk/menu.c +++ b/gtk/menu.c @@ -449,9 +449,9 @@ static struct nsgtk_help_menu *nsgtk_menu_help_submenu(GtkAccelGroup *group) * * Generate the main menu structure and attach it to a menubar widget. */ -struct nsgtk_bar_submenu *nsgtk_menu_bar_create(GtkMenuShell *menubar, GtkWindow *window) +struct nsgtk_bar_submenu *nsgtk_menu_bar_create(GtkMenuShell *menubar, GtkAccelGroup *group) { - GtkAccelGroup *group; + ; struct nsgtk_bar_submenu *nmenu; nmenu = malloc(sizeof(struct nsgtk_bar_submenu)); @@ -462,9 +462,6 @@ struct nsgtk_bar_submenu *nsgtk_menu_bar_create(GtkMenuShell *menubar, GtkWindow nmenu->bar_menu = GTK_MENU_BAR(menubar); - group = gtk_accel_group_new(); - gtk_window_add_accel_group(window, group); - nmenu->file_submenu = nsgtk_menu_file_submenu(group); ATTACH_PARENT(menubar, gtkFile, nmenu->file_submenu->file, group); @@ -487,9 +484,8 @@ struct nsgtk_bar_submenu *nsgtk_menu_bar_create(GtkMenuShell *menubar, GtkWindow * Generate right click menu menu. * */ -struct nsgtk_popup_submenu *nsgtk_menu_popup_create(GtkWindow *window) +struct nsgtk_popup_submenu *nsgtk_menu_popup_create(GtkAccelGroup *group) { - GtkAccelGroup *group; struct nsgtk_popup_submenu *nmenu; nmenu = malloc(sizeof(struct nsgtk_popup_submenu)); @@ -498,9 +494,6 @@ struct nsgtk_popup_submenu *nsgtk_menu_popup_create(GtkWindow *window) return NULL; } - group = gtk_accel_group_new(); - gtk_window_add_accel_group(window, group); - nmenu->popup_menu = GTK_MENU(gtk_menu_new()); IMAGE_ITEM(popup, file, gtkFile, nmenu, group); diff --git a/gtk/menu.h b/gtk/menu.h index 84faa5f71..681f43c2b 100644 --- a/gtk/menu.h +++ b/gtk/menu.h @@ -189,7 +189,7 @@ struct nsgtk_popup_submenu { }; -struct nsgtk_bar_submenu *nsgtk_menu_bar_create(GtkMenuShell *menubar, GtkWindow *window); -struct nsgtk_popup_submenu *nsgtk_menu_popup_create(GtkWindow *window); +struct nsgtk_bar_submenu *nsgtk_menu_bar_create(GtkMenuShell *menubar, GtkAccelGroup *group); +struct nsgtk_popup_submenu *nsgtk_menu_popup_create(GtkAccelGroup *group); #endif diff --git a/gtk/scaffolding.c b/gtk/scaffolding.c index 573eec70a..2fd865cb5 100644 --- a/gtk/scaffolding.c +++ b/gtk/scaffolding.c @@ -1563,11 +1563,11 @@ static void nsgtk_attach_menu_handlers(struct gtk_scaffolding *g) * \param g scaffoliding to attach popup menu to. * \return true on success or false on error. */ -static bool nsgtk_new_scaffolding_popup(struct gtk_scaffolding *g) +static bool nsgtk_new_scaffolding_popup(struct gtk_scaffolding *g, GtkAccelGroup *group) { struct nsgtk_popup_submenu *nmenu; - nmenu = nsgtk_menu_popup_create(g->window); + nmenu = nsgtk_menu_popup_create(group); if (nmenu == NULL) return false; @@ -1610,6 +1610,7 @@ nsgtk_scaffolding *nsgtk_new_scaffolding(struct gui_window *toplevel) struct gtk_scaffolding *g = malloc(sizeof(*g)); char *searchname; int i; + GtkAccelGroup *group; if (g == NULL) { warn_user("NoMemory", 0); @@ -1677,7 +1678,10 @@ nsgtk_scaffolding *nsgtk_new_scaffolding(struct gui_window *toplevel) nsgtk_toolbar_customization_load(g); nsgtk_toolbar_set_physical(g); - g->menu_bar = nsgtk_menu_bar_create(GTK_MENU_SHELL(glade_xml_get_widget(g->xml, "menubar")), g->window); + group = gtk_accel_group_new(); + gtk_window_add_accel_group(g->window, group); + + g->menu_bar = nsgtk_menu_bar_create(GTK_MENU_SHELL(glade_xml_get_widget(g->xml, "menubar")), group); g->preferences_dialog = NULL; @@ -1848,7 +1852,7 @@ nsgtk_scaffolding *nsgtk_new_scaffolding(struct gui_window *toplevel) nsgtk_window_tool_bar_clicked, g); /* create popup menu */ - nsgtk_new_scaffolding_popup(g); + nsgtk_new_scaffolding_popup(g, group); /* set up the menu signal handlers */ nsgtk_scaffolding_toolbar_init(g); -- cgit v1.2.3