Ошибка GTK 2 gtk_widget_add_accelerator: «GDK_Z» не объявлен

Я пытаюсь назначить ускоритель элементу меню GTK:

group = gtk_accel_group_new();

item = gtk_image_menu_item_new_from_stock(GTK_STOCK_UNDO, group);

gtk_widget_add_accelerator(item, "activate", group, GDK_Z, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE);

Но при компиляции получаю следующую ошибку:

./src/main.c:171:55: error: ‘GDK_Z’ undeclared (first use in this function)
   gtk_widget_add_accelerator(item, "activate", group, GDK_Z, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE);
                                                       ^

Это вывод из pkg-config --cflags gtk+-2.0:

-pthread -I/usr/include/gtk-2.0 -I/usr/lib/x86_64-linux-gnu/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libpng12 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng12 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/freetype2

Как я могу сделать идентификатор GDK_Z доступным для моей программы?


person Luke    schedule 03.10.2018    source источник
comment
У вас правильно установлен пакет разработки для GTK+ (libgtk2.0-dev)?   -  person Michi    schedule 03.10.2018
comment
Хм. Интересная мысль. Я попробовал sudo apt-get remove libgtk2.0-dev --purge, а затем переустановил sudo apt-get install libgtk2.0-dev. Та же проблема..   -  person Luke    schedule 03.10.2018
comment
Я не уверен, что имею представление о том, что собираюсь сказать, но сработает ли это, если вы сделаете guint key = GDK_z; или guint key = GDK_Z;, а затем =›› gtk_widget_add_accelerator(item, "activate", group, key, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE); ?   -  person Michi    schedule 03.10.2018
comment
Спасибо за это. Я пробовал оба, та же ошибка. Это справочные документы для gtk_widget_add_accelerator, они говорят, что accel_key является GDK keyval of the accelerator, но я не могу найти никаких документов для них. Я взял пример GDK_Z из популярной в свое время книги по GTK 2. Но там нет ссылки на что-то конкретное. developer.gnome.org/gtk2/stable/   -  person Luke    schedule 03.10.2018
comment
Благодарю вас! И #include <gdk/gdkkeysyms.h> это так. Если вы добавите это как ответ, я приму его как правильный.   -  person Luke    schedule 03.10.2018


Ответы (1)


Вы не включили gdkkeysyms.h:

#include <gdk/gdkkeysyms.h>

Который содержит GDK_Z, необходимые для вашей программы.

person Michi    schedule 03.10.2018