assert(sc->uc->list != NULL);  gtk_container_focus(GTK_CONTAINER(sc->uc->list), GTK_DIR_TAB_FORWARD);
int win_key_press(GtkWidget *widget, GdkEventKey *event, gpointer data){    struct dlgparam *dp = (struct dlgparam *)data;    if (event->keyval == GDK_Escape) {	gtk_main_quit();	return TRUE;    }    if ((event->state & GDK_MOD1_MASK) &&	(unsigned char)event->string[0] > 0 &&	(unsigned char)event->string[0] <= 127) {	int schr = (unsigned char)event->string[0];	struct Shortcut *sc = &dp->shortcuts->sc[schr];	switch (sc->action) {	  case SHORTCUT_FOCUS:	    gtk_widget_grab_focus(sc->widget);	    break;	  case SHORTCUT_UCTRL:	    /*	     * We must do something sensible with a uctrl.	     * Precisely what this is depends on the type of	     * control.	     */	    switch (sc->uc->ctrl->generic.type) {	      case CTRL_CHECKBOX:	      case CTRL_BUTTON:		/* Check boxes and buttons get the focus _and_ get toggled. */		gtk_widget_grab_focus(sc->uc->toplevel);		gtk_signal_emit_by_name(GTK_OBJECT(sc->uc->toplevel),					"clicked");		break;	      case CTRL_FILESELECT:	      case CTRL_FONTSELECT:		/* File/font selectors have their buttons pressed (ooer),		 * and focus transferred to the edit box. */		gtk_signal_emit_by_name(GTK_OBJECT(sc->uc->button),					"clicked");		gtk_widget_grab_focus(sc->uc->entry);		break;	      case CTRL_RADIO:		/*		 * Radio buttons are fun, because they have		 * multiple shortcuts. We must find whether the		 * activated shortcut is the shortcut for the whole		 * group, or for a particular button. In the former		 * case, we find the currently selected button and		 * focus it; in the latter, we focus-and-click the		 * button whose shortcut was pressed.		 */		if (schr == sc->uc->ctrl->radio.shortcut) {		    int i;		    for (i = 0; i < sc->uc->ctrl->radio.nbuttons; i++)			if (gtk_toggle_button_get_active			    (GTK_TOGGLE_BUTTON(sc->uc->buttons[i]))) {			    gtk_widget_grab_focus(sc->uc->buttons[i]);			}		} else if (sc->uc->ctrl->radio.shortcuts) {		    int i;		    for (i = 0; i < sc->uc->ctrl->radio.nbuttons; i++)			if (schr == sc->uc->ctrl->radio.shortcuts[i]) {			    gtk_widget_grab_focus(sc->uc->buttons[i]);			    gtk_signal_emit_by_name				(GTK_OBJECT(sc->uc->buttons[i]), "clicked");			}		}		break;	      case CTRL_LISTBOX:		/*		 * List boxes are fun too. If the list is really an		 * option menu, we simply focus and click it.		 * Otherwise we must do something clever (FIXME).		 */		if (sc->uc->optmenu) {		    GdkEventButton bev;		    gint returnval;		    gtk_widget_grab_focus(sc->uc->optmenu);		    /* Option menus don't work using the "clicked" signal.		     * We need to manufacture a button press event :-/ */		    bev.type = GDK_BUTTON_PRESS;		    bev.button = 1;		    gtk_signal_emit_by_name(GTK_OBJECT(sc->uc->optmenu),					    "button_press_event",					    &bev, &returnval);		} else {		}		break;	    }	    break;	}    }    return FALSE;}