2017-01-16 29 views
0

Я пишу программу Gtk в Вала, которая использует Gtk.Menu.
Мне нужно использовать Gtk.Menu.popup_at_pointer() для отображения меню при нажатии правой кнопки мыши.Missing gtk_menu_popup_at_pointer()

При компиляции (с --pkg gtk+-3.0), GCC дает мне ошибку: warning: implicit declaration of function ‘gtk_menu_popup_at_pointer’ [-Wimplicit-function-declaration]

Метод существует в /usr/share/vala-0.34/vapi/gtk+-3.0.vapi, но отсутствует в /usr/include/gtk-3.0/gtk/gtkmenu.h.

Вот версии соответствующих пакетов на моей системе:

$ dpkg -s libgtk-3-dev | grep '^Version:'  
Version: 3.18.9-1ubuntu3.1 
$ dpkg -s valac | grep '^Version:' 
Version: 0.34.4-0ubuntu1~16.04~valateam1 
$ dpkg -s libglib2.0-0 | grep '^Version:' 
Version: 2.48.2-0elementary0.4.1 

Что я должен сделать, чтобы иметь возможность использовать этот метод?

+3

В соответствии с [документацией] (https://developer.gnome.org/gtk3/stable/GtkMenu.html#gtk-menu-popup-at-pointer) эта функция была введена в 3.22 (вы на 3.18.9). –

ответ

0

Ваша версия GTK + слишком стар.

Если вы посмотрите на документы GTK + для этой функции, вы увидите, что она была введена в GTK + 3.22: https://developer.gnome.org/gtk3/stable/GtkMenu.html#gtk-menu-popup-at-pointer, тогда как у вас установлено только 3.18.

Обратите внимание, что метод также объявляется нестабильным, что означает, что в будущем он может измениться таким образом, что это нарушит ваше приложение, и, следовательно, вы, вероятно, лучше найдете альтернативное решение на данный момент.