/** scrolled.c **/ #include GtkWidget *makeScrolledWindow(); gint eventDelete(GtkWidget *widget, GdkEvent *event,gpointer data); gint eventDestroy(GtkWidget *widget, GdkEvent *event,gpointer data); int main(int argc,char *argv[]) { GtkWidget *window; GtkWidget *scrolled; gnome_init("scrolled","1.0",argc,argv); window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_default_size(GTK_WINDOW(window), 200,200); gtk_signal_connect(GTK_OBJECT(window), "delete_event", GTK_SIGNAL_FUNC(eventDelete), NULL); gtk_signal_connect(GTK_OBJECT(window), "destroy", GTK_SIGNAL_FUNC(eventDestroy), NULL); scrolled = makeScrolledWindow(); gtk_container_add(GTK_CONTAINER(window),scrolled); gtk_widget_show_all(window); gtk_main(); exit(0); } GtkWidget *makeScrolledWindow() { gint i; gint j; gchar label[40]; GtkWidget *scrolled; GtkWidget *button; GtkWidget *fixed; scrolled = gtk_scrolled_window_new(NULL,NULL); gtk_scrolled_window_set_policy( GTK_SCROLLED_WINDOW(scrolled), GTK_POLICY_ALWAYS, GTK_POLICY_ALWAYS); fixed = gtk_fixed_new(); for(i=30; i<300; i += 30) { for(j=30; j<300; j += 30) { sprintf(label,"(%3d,%3d)",2*i,j); button = gtk_button_new_with_label(label); gtk_fixed_put(GTK_FIXED(fixed),button,2*i,j); } } gtk_scrolled_window_add_with_viewport( GTK_SCROLLED_WINDOW(scrolled), fixed); return(scrolled); } gint eventDelete(GtkWidget *widget, GdkEvent *event,gpointer data) { return(FALSE); } gint eventDestroy(GtkWidget *widget, GdkEvent *event,gpointer data) { gtk_main_quit(); return(0); }