Обнаружение использования глобального меню Ubuntu Unity

Я портирую коммерческое приложение на Linux, оно должно работать на нескольких дистрибутивах. При запуске в Ubuntu GtkMenuBar удаляется из окна приложения и помещается в главную глобальную панель меню. Это нормально ... но в окне приложения, где было удалено меню, есть соответствующее пустое место (оно помещается с помощью GtkFixed). Я должен быть в состоянии определить, когда это произошло (и ТОЛЬКО), когда это произошло из любого дистрибутива, чтобы я мог надежно удалить пустое пространство.

Какой лучший способ обнаружить это? (то есть через gtk_widget _... вызовы) Что было сделано с GtkMenuBar для достижения этой цели? Благодаря.

4
задан 27 February 2013 в 19:36

2 ответа

Вот что мне, наконец, пришлось прибегнуть к нескольким дистрибутивам и возможности, которую пользователь установил для исключения:

static int menu_proxy = -1;
typedef void *(*KVoidPtoF)();

void *proxylib;
KVoidPtoF gtk_menu_proxy_get;

menu_proxy = 0;
proxylib = dlopen("libappmenu.so", RTLD_NOLOAD | RTLD_LAZY);
if (proxylib)
{
    gtk_menu_proxy_get = (KVoidPtoF)dlsym(proxylib, 
        "ubuntu_menu_proxy_get");
    if (gtk_menu_proxy_get && (*gtk_menu_proxy_get)() != 0)
        menu_proxy = 1;
}
0
ответ дан 27 February 2013 в 19:36

Проблема не в том, что с GtkMenuBar было сделано что-то особенное (оно просто скрыто). Проблема заключается в том, что вы используете GtkFixed для его позиционирования, и поэтому при изменении MenuBar все не изменяется автоматически.

Есть ли какая-то конкретная причина, по которой вы используете GtkFixed для позиционирования, а не обычную структуру компоновки блоков GTK +? Возможно, вы захотите изучить использование GtkApplication и / или GtkBuilder для создания и представления вашего пользовательского интерфейса, вместо использования абсолютного позиционирования с GtkFixed.

Если вы хотите продолжить использовать GtkFixed, вам нужно будет просмотреть свойство (или сигнал) на GtkMenuBar, а также вручную изменить положение и / или изменить размеры других виджетов в вашем окне, когда GtkMenuBar скрыт.

0
ответ дан 27 February 2013 в 19:36

Другие вопросы по тегам:

Похожие вопросы: