Я изменил это:
static GtkActionEntry menu_items[] = {
{ "OpenFile", GTK_STOCK_OPEN, NULL, "<control>O", NULL, G_CALLBACK(file_open) },
...
},
... на это:
static GtkActionEntry menu_items[] = {
{ "OpenFile", GTK_STOCK_OPEN, NULL, gtk_accelerator_name(GDK_o, GDK_CONTROL_MASK), NULL, G_CALLBACK(file_open) },
...
},
... и теперь я получаю "ошибка: элемент инициализатора не является константой". Какие изменения мне нужно сделать, чтобы это работало?
GtkActionEntry Четвертый аргумент является указателем gchar, а gtk_accelerator_name возвращает это, насколько я вижу.
menu_items используется в статической функции, например:
static gint nmenu_items = sizeof (menu_items) / sizeof (menu_items[0]);
static GtkWidget *get_menubar_menu(GtkWidget *win) {
GtkActionGroup *action_group = gtk_action_group_new("Menu");
gtk_action_group_add_actions(action_group, menu_items, nmenu_items, 0);
...
}