int clip_GTK_CONTAINERSETFOCUSHADJUSTMENT(ClipMachine * cm) { C_widget *ccon = _fetch_cw_arg(cm); C_widget *cwid = _fetch_cwidget(cm,_clip_spar(cm,2)); CHECKCWID(ccon,GTK_IS_CONTAINER); CHECKARG2(2,MAP_t,NUMERIC_t); CHECKCWID(cwid,GTK_IS_ADJUSTMENT); gtk_container_set_focus_hadjustment(GTK_CONTAINER(ccon->widget), GTK_ADJUSTMENT(cwid->widget)); return 0; err: return 1; }
void main (int argc, char **argv) { GtkWidget *window, *entry, *hbox, *vbox, *label, *label2, *l3, *l4, *la; GtkWidget *scrolled_window; GtkWidget *table; int i,j; gtk_init (&argc, &argv); gtk_settings_set_string_property (gtk_settings_get_default (), "gtk-theme-name", "nimbus", "gdm"); window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_default_size (GTK_WINDOW (window), 400, 400); g_signal_connect (G_OBJECT (window), "delete_event", G_CALLBACK (gtk_main_quit), NULL); entry = gtk_entry_new (); scrolled_window = gtk_scrolled_window_new (NULL, NULL); gtk_container_set_border_width (GTK_CONTAINER (scrolled_window), 10); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); table = gtk_table_new (20, 20, FALSE); gtk_table_set_row_spacings (GTK_TABLE (table), 10); gtk_table_set_col_spacings (GTK_TABLE (table), 10); gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (scrolled_window), table); gtk_container_set_focus_hadjustment (GTK_CONTAINER (table), gtk_scrolled_window_get_hadjustment (GTK_SCROLLED_WINDOW (scrolled_window))); gtk_container_set_focus_vadjustment (GTK_CONTAINER (table), gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW (scrolled_window))); gtk_widget_show (table); for (i = 0; i < 20; i++) for (j = 0; j < 20; j++) { la= gtk_label_new (" "); gtk_table_attach_defaults (GTK_TABLE (table), la, i, i+1, j, j+1); gtk_widget_show (la); } /* gtk_widget_set_sensitive (scrolled_window, FALSE); */ hbox = gtk_hbox_new (FALSE, 10); vbox = gtk_vbox_new (FALSE, 10); gtk_container_add (GTK_CONTAINER (window), vbox); label = gtk_label_new (" "); label2 = gtk_label_new (" "); l3 = gtk_label_new (" "); l4 = gtk_label_new (" "); gtk_container_add (GTK_CONTAINER (vbox), label); gtk_container_add (GTK_CONTAINER (vbox), hbox); gtk_container_add (GTK_CONTAINER (vbox), label2); gtk_container_add (GTK_CONTAINER (hbox), l3); gtk_container_add (GTK_CONTAINER (hbox), scrolled_window); gtk_container_add (GTK_CONTAINER (hbox), l4); gtk_widget_show_all (window); gtk_main (); }
static void gtk_combo_init (GtkCombo * combo) { GtkWidget *arrow; GtkWidget *frame; GtkWidget *event_box; GdkCursor *cursor; combo->case_sensitive = 0; combo->value_in_list = 0; combo->ok_if_empty = 1; combo->use_arrows = 1; combo->use_arrows_always = 0; combo->entry = gtk_entry_new (); combo->button = gtk_button_new (); combo->current_button = 0; arrow = gtk_arrow_new (GTK_ARROW_DOWN, GTK_SHADOW_OUT); gtk_widget_show (arrow); gtk_container_add (GTK_CONTAINER (combo->button), arrow); gtk_box_pack_start (GTK_BOX (combo), combo->entry, TRUE, TRUE, 0); gtk_box_pack_end (GTK_BOX (combo), combo->button, FALSE, FALSE, 0); GTK_WIDGET_UNSET_FLAGS (combo->button, GTK_CAN_FOCUS); gtk_widget_show (combo->entry); gtk_widget_show (combo->button); combo->entry_change_id = gtk_signal_connect (GTK_OBJECT (combo->entry), "changed", (GtkSignalFunc) gtk_combo_update_list, combo); gtk_signal_connect (GTK_OBJECT (combo->entry), "key_press_event", (GtkSignalFunc) gtk_combo_entry_key_press, combo); gtk_signal_connect_after (GTK_OBJECT (combo->entry), "focus_out_event", (GtkSignalFunc) gtk_combo_entry_focus_out, combo); combo->activate_id = gtk_signal_connect (GTK_OBJECT (combo->entry), "activate", (GtkSignalFunc) gtk_combo_activate, combo); gtk_signal_connect_after (GTK_OBJECT (combo->button), "button_press_event", (GtkSignalFunc) gtk_combo_popup_button_press, combo); /*gtk_signal_connect_after (GTK_OBJECT (combo->button), "button_release_event", (GtkSignalFunc) gtk_combo_button_release, combo);*/ gtk_signal_connect (GTK_OBJECT (combo->button), "leave_notify_event", (GtkSignalFunc) gtk_combo_popup_button_leave, combo); /*gtk_signal_connect(GTK_OBJECT(combo->button), "clicked", (GtkSignalFunc)prelight_bug, combo); */ combo->popwin = gtk_window_new (GTK_WINDOW_POPUP); gtk_widget_ref (combo->popwin); gtk_window_set_policy (GTK_WINDOW (combo->popwin), 1, 1, 0); gtk_widget_set_events (combo->popwin, GDK_KEY_PRESS_MASK); event_box = gtk_event_box_new (); gtk_container_add (GTK_CONTAINER (combo->popwin), event_box); gtk_widget_show (event_box); gtk_widget_realize (event_box); cursor = gdk_cursor_new (GDK_TOP_LEFT_ARROW); gdk_window_set_cursor (event_box->window, cursor); gdk_cursor_destroy (cursor); frame = gtk_frame_new (NULL); gtk_container_add (GTK_CONTAINER (event_box), frame); gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_OUT); gtk_widget_show (frame); combo->popup = gtk_scrolled_window_new (NULL, NULL); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (combo->popup), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); GTK_WIDGET_UNSET_FLAGS (GTK_SCROLLED_WINDOW (combo->popup)->hscrollbar, GTK_CAN_FOCUS); GTK_WIDGET_UNSET_FLAGS (GTK_SCROLLED_WINDOW (combo->popup)->vscrollbar, GTK_CAN_FOCUS); gtk_container_add (GTK_CONTAINER (frame), combo->popup); gtk_widget_show (combo->popup); combo->list = gtk_list_new (); /* We'll use enter notify events to figure out when to transfer * the grab to the list */ gtk_widget_set_events (combo->list, GDK_ENTER_NOTIFY_MASK); gtk_list_set_selection_mode(GTK_LIST(combo->list), GTK_SELECTION_BROWSE); gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (combo->popup), combo->list); gtk_container_set_focus_vadjustment (GTK_CONTAINER (combo->list), gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW (combo->popup))); gtk_container_set_focus_hadjustment (GTK_CONTAINER (combo->list), gtk_scrolled_window_get_hadjustment (GTK_SCROLLED_WINDOW (combo->popup))); gtk_widget_show (combo->list); combo->list_change_id = gtk_signal_connect (GTK_OBJECT (combo->list), "selection_changed", (GtkSignalFunc) gtk_combo_update_entry, combo); gtk_signal_connect (GTK_OBJECT (combo->popwin), "key_press_event", (GtkSignalFunc) gtk_combo_list_key_press, combo); gtk_signal_connect (GTK_OBJECT (combo->popwin), "button_press_event", GTK_SIGNAL_FUNC (gtk_combo_button_press), combo); gtk_signal_connect_after (GTK_OBJECT (combo->list), "button_release_event", GTK_SIGNAL_FUNC (gtk_combo_button_release), combo); /* We connect here on the button, because we'll have a grab on it * when the event occurs. But we are actually interested in enters * for the combo->list. */ gtk_signal_connect (GTK_OBJECT (combo->button), "enter_notify_event", GTK_SIGNAL_FUNC (gtk_combo_list_enter), combo); }