I'm not soure if I understand you, but if you change is_attached_menu_window function from gailtoplevel so as to it always returns FALSE, an attached menu is detected normally.
Marcin > It looks to me as though gailwidget should be detecting when/whether > gtk_menu_attach_to_widget has been called, and modifying > gail_widget_ref_child accordingly... I am not sure offhand if we can > detect the presence of an attached menu, but I would expect gtk+ to > provide some API for it (perhaps as a GObject property?) > > Bill > > Marcin Lyko wrote: > >>> Do you have a small test program which illustrates the problem? >>> >> >> >> A test program which illustrates the problem you can find in the >> attachment. In the program menu is attached to "popup menu" button and >> it isn't seen by at-spi after its popup. >> >> >> >>> You could log a bug at http://bugzilla.gnome.org against atk/gail. >>> >> >> >> I raport the bug soon. >> >> Marcin >> >> >> -- >> Empowering business >> http://webinars.comarch.com >> >> ------------------------------------------------------------------------ >> >> #include <gtk/gtk.h> >> >> static gboolean close_app_cb( GtkWidget *widget, GdkEvent *event, >> gpointer data ) >> { >> gtk_main_quit (); >> >> return FALSE; >> } >> >> static void popup_menu_cb( GtkWidget *widget, gpointer data ) >> { >> GtkWidget *menu = (GtkWidget *) data; >> >> gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL, 1, >> gtk_get_current_event_time ()); >> } >> >> static void items_cb( GtkWidget *widget, gpointer data ) >> { >> g_print ("%s clicked...\n", (gchar *) data); >> } >> >> void detacher_menu (GtkWidget *widget, GtkMenu *menu) >> { >> g_print ("detacher menu\n"); >> } >> >> static GtkMenu *create_menu(void) >> { >> GtkMenu *menu = NULL; >> GtkWidget *item = NULL; >> >> menu = GTK_MENU (gtk_menu_new ()); >> >> if (menu->toplevel) >> { >> GdkGeometry geometry = {0}; >> geometry.win_gravity = GDK_GRAVITY_NORTH_EAST; >> gtk_window_set_geometry_hints (GTK_WINDOW (menu->toplevel), >> GTK_WIDGET >> (menu->toplevel), >> &geometry, >> GDK_HINT_WIN_GRAVITY); >> } >> >> item = gtk_menu_item_new_with_label ( "First item" ); >> gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); >> g_signal_connect (item, "activate", G_CALLBACK (items_cb), >> (gpointer) "First item"); >> >> item = gtk_menu_item_new_with_label ( "Second item" ); >> gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); >> g_signal_connect (item, "activate", G_CALLBACK (items_cb), >> (gpointer) "Second item"); >> >> item = gtk_menu_item_new_with_label ( "Third item" ); >> gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); >> g_signal_connect (item, "activate", G_CALLBACK (items_cb), >> (gpointer) "Third item"); >> >> gtk_widget_show_all (GTK_WIDGET (menu)); >> >> return menu; >> } >> >> int main (int argc, char *argv[]) >> { >> GtkWidget *window; >> GtkWidget *vbox; >> GtkWidget *label; >> GtkWidget *button; >> GtkWidget *menu; >> >> gtk_init (&argc, &argv); >> >> window = gtk_window_new (GTK_WINDOW_TOPLEVEL); >> g_signal_connect (G_OBJECT (window), "delete_event", G_CALLBACK >> (close_app_cb), NULL); >> gtk_container_set_border_width (GTK_CONTAINER (window), 10); >> >> vbox = gtk_vbox_new (FALSE, 5); >> gtk_container_add (GTK_CONTAINER (window), vbox); >> >> label = gtk_label_new( "Some label" ); >> gtk_box_pack_start(GTK_BOX(vbox), GTK_WIDGET(label), TRUE, TRUE, 0); >> >> menu = (GtkWidget *) create_menu(); >> >> button = gtk_button_new_with_label ("Popup menu"); >> gtk_box_pack_start(GTK_BOX(vbox), GTK_WIDGET(button), TRUE, TRUE, 0); >> g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK >> (popup_menu_cb), (gpointer) menu); >> >> gtk_menu_attach_to_widget (GTK_MENU(menu), GTK_WIDGET(button), >> detacher_menu); >> >> gtk_widget_show_all (GTK_WIDGET(window)); >> >> gtk_main (); >> >> return 0; >> } >> >> ------------------------------------------------------------------------ >> >> _______________________________________________ >> Gnome-accessibility-devel mailing list >> [email protected] >> http://mail.gnome.org/mailman/listinfo/gnome-accessibility-devel >> > > > -- Empowering business http://webinars.comarch.com _______________________________________________ Gnome-accessibility-devel mailing list [email protected] http://mail.gnome.org/mailman/listinfo/gnome-accessibility-devel
