есть такой простенький код
#include <gtk/gtk.h>
int main ()
{
GtkWidget *m, *i;
gtk_init (0, NULL);
m = gtk_menu_new ();
i = gtk_menu_item_new_with_label ("test1");
gtk_widget_show (i);
gtk_menu_shell_append (GTK_MENU_SHELL (m), i);
g_signal_connect (i, "activate", gtk_main_quit, NULL);
i = gtk_menu_item_new_with_label ("test2");
gtk_widget_show (i);
gtk_menu_shell_append (GTK_MENU_SHELL (m), i);
g_signal_connect (i, "activate", gtk_main_quit, NULL);
i = gtk_menu_item_new_with_label ("test3");
gtk_widget_show (i);
gtk_menu_shell_append (GTK_MENU_SHELL (m), i);
g_signal_connect (i, "activate", gtk_main_quit, NULL);
gtk_menu_popup (GTK_MENU (m), NULL, NULL, NULL, NULL, 0,
gtk_get_current_event_time ());
gtk_main ();
return 0;
}
собираю, запускаю - все нормально, менюшка показывается. пытаюсь зацепить эту же програмулинку на комбинацию клавиш в fvwm - и по нулям, меню нет.
Mouse 2 R A Exec exec $[HOME]/a.out
причем, если запускать Exec из FvwmConsole или при помощи FvwmCommand - все нормально, все показывается. также не наблюдается проблем, если основное окно имеет тип GTK_WINDOW_TOPLVEL.
привязки к виджету и попытки подпихнуть рутовое окно в через gdk_window_set_group() или gdk_window_set_transient_for() не помогли.
подозреваю, что если слепить обычное окно без обрамления и прочих пейджеров/таскбаров и подпихнуть его менюхе в качестве parent-а - все будет работать. но подобный вариант уж очень хаком пахнет, потому пока ищу другие решения