static gboolean idle_do_action (gpointer data) { GtkWidget *item; GtkWidget *item_parent; GailMenuItem *menu_item; gboolean item_mapped; menu_item = GAIL_MENU_ITEM (data); menu_item->action_idle_handler = 0; item = GTK_ACCESSIBLE (menu_item)->widget; if (item == NULL /* State is defunct */ || !gtk_widget_get_sensitive (item) || !gtk_widget_get_visible (item)) return FALSE; item_parent = gtk_widget_get_parent (item); gtk_menu_shell_select_item (GTK_MENU_SHELL (item_parent), item); item_mapped = gtk_widget_get_mapped (item); /* * This is what is called when <Return> is pressed for a menu item */ g_signal_emit_by_name (item_parent, "activate_current", /*force_hide*/ 1); if (!item_mapped) ensure_menus_unposted (menu_item); return FALSE; }
static gboolean gtk_menu_item_accessible_do_action (AtkAction *action, gint i) { GtkWidget *item, *item_parent; gboolean item_mapped; item = gtk_accessible_get_widget (GTK_ACCESSIBLE (action)); if (item == NULL) return FALSE; if (i != 0) return FALSE; if (!gtk_widget_get_sensitive (item) || !gtk_widget_get_visible (item)) return FALSE; item_parent = gtk_widget_get_parent (item); if (!GTK_IS_MENU_SHELL (item_parent)) return FALSE; gtk_menu_shell_select_item (GTK_MENU_SHELL (item_parent), item); item_mapped = gtk_widget_get_mapped (item); /* This is what is called when <Return> is pressed for a menu item. * The last argument means 'force hide'. */ g_signal_emit_by_name (item_parent, "activate-current", 1); if (!item_mapped) ensure_menus_unposted (GTK_MENU_ITEM_ACCESSIBLE (action)); return TRUE; }