There might be a problem with the new mixins. I took for example GTK2.FileChooser->get_preview_widget(). The source generated now is:
void pgtk_file_chooser_get_preview_widget(INT32 args) { pgtk_verify_inited(); { GtkWidget *a1; a1 = (GtkWidget *) gtk_file_chooser_get_preview_widget(GTK_FILE_CHOOSER(THIS->obj)); my_pop_n_elems(args); push_gobjectclass(a1,pgtk_widget_program); } }
The original had:
push_gobject(a1);
Now, the old function call actually got changed to:
push_gobjectclass(a1,pgtk_type_to_program(a1));
which would push the correct object type, be it GTK2.Label, GTK2.Image, or whatever.
Now, push_gobjectclass(a1,pgtk_widget_program) only pushes it as a pgtk_widget_program, which isn't the correct type.
Basically, functions that return a GTK2.Widget need to return the actual object type, not just a pgtk_widget_program. Maybe build_pgtk.pike (or the output/ files) should be changed to generated push_gobjectclass(a1,pgtk_type_to_program(a1)) for any function the returns a GTK2.Widget (or actually, any GTK2 object type).
Now, I know this because I did it that way originally (by letting build_pgtk.pike generate the code for those functions itself), but then I realized that the object that got returned wasn't what I wanted. My pike code after that couldn't call any of the functions for the proper object, because it was just a GTK2.Widget).