{
GtkWidget *item;
GtkWidget *submenu;
+ GtkAccelGroup *accel_group;
+ accel_group = gtk_accel_group_new();
item = menu_item_add(menu, _("_Plugins"), NULL, NULL);
submenu = gtk_menu_new();
g_object_set_data(G_OBJECT(submenu), "submenu_data", data);
+ gtk_menu_set_accel_group(GTK_MENU(submenu), accel_group);
+ g_object_set_data(G_OBJECT(submenu), "accel_group", accel_group);
+
add_edit_items(submenu, func, fd_list);
gtk_menu_item_set_submenu(GTK_MENU_ITEM(item), submenu);
g_assert(lw && lw->ui_manager);
groups = gtk_ui_manager_get_action_groups(lw->ui_manager);
- actions = gtk_action_group_list_actions(GTK_ACTION_GROUP(groups->data)); // Only the first group required
- actions = g_list_sort(actions, actions_sort_cb);
- while (actions)
+ while (groups)
{
- action = GTK_ACTION(actions->data);
- accel_path = gtk_action_get_accel_path(action);
- if (accel_path && gtk_accel_map_lookup_entry(accel_path, &key))
+ actions = gtk_action_group_list_actions(GTK_ACTION_GROUP(groups->data));
+ actions = g_list_sort(actions, actions_sort_cb);
+
+ while (actions)
{
- g_object_get(action, "label", &action_label, NULL);
+ action = GTK_ACTION(actions->data);
+ accel_path = gtk_action_get_accel_path(action);
+ if (accel_path && gtk_accel_map_lookup_entry(accel_path, &key))
+ {
+ g_object_get(action, "label", &action_label, NULL);
- pango_parse_markup(action_label, -1, '_', NULL, &action_label_text, NULL, NULL);
+ pango_parse_markup(action_label, -1, '_', NULL, &action_label_text, NULL, NULL);
- if (g_strcmp0(action_label_text, menu_label_text) == 0)
- {
- if (key.accel_key != 0)
+ if (g_strcmp0(action_label_text, menu_label_text) == 0)
{
- gtk_widget_add_accelerator(menu, "activate", accel_group, key.accel_key, key.accel_mods, GTK_ACCEL_VISIBLE);
+ if (key.accel_key != 0)
+ {
+ gtk_widget_add_accelerator(menu, "activate", accel_group, key.accel_key, key.accel_mods, GTK_ACCEL_VISIBLE);
- break;
+ break;
+ }
}
+ g_free(action_label_text);
+ g_free(action_label);
}
-
- g_free(action_label_text);
- g_free(action_label);
+ actions = actions->next;
}
- actions = actions->next;
+ groups = groups->next;
}
g_free(menu_label);