Detectando o uso do menu global do ubuntu unity

4

Estou portando um aplicativo comercial para o Linux, é para rodar em várias distros. Quando executado no Ubuntu, o GtkMenuBar é removido da janela do aplicativo e colocado na barra principal do menu global. Tudo bem ... mas há um espaço vazio correspondente na janela do aplicativo onde o menu foi removido (é colocado com GtkFixed). Eu preciso ser capaz de detectar quando isso aconteceu (e SOMENTE) quando aconteceu de qualquer distro, para que eu possa remover com segurança o espaço vazio.

Qual é a melhor maneira de detectar isso? (ou seja, via gtk_widget _... chama) O que foi feito para o GtkMenuBar para conseguir isso? Obrigado.

    
por dajoke 27.02.2013 / 16:36

2 respostas

1

Aqui está o que eu finalmente tive que recorrer para várias distribuições e a possibilidade de o usuário ter definido uma exceção:

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;
}
    
por dajoke 14.03.2013 / 00:59
1

O problema não é que alguma coisa em particular tenha sido feita no GtkMenuBar (acabou de ser escondido). O problema é que você está usando o GtkFixed para posicioná-lo e, assim, as coisas não são redimensionadas automaticamente quando o MenuBar desaparece.

Existe algum motivo particular para você usar um GtkFixed para posicionar as coisas, em vez de usar a estrutura de layout de caixa normal do GTK +? Você pode querer usar GtkApplication e / ou GtkBuilder para criar e apresentar sua interface de usuário, ao invés de usar posicionamento absoluto com GtkFixed.

Se você deseja continuar usando o GtkFixed, você precisará observar uma propriedade (ou sinal) no GtkMenuBar, e reposicionar e / ou redimensionar os outros widgets em sua janela manualmente, quando o GtkMenuBar estiver oculto.

    
por dobey 27.02.2013 / 16:48