Hi Again, I created a test case in C that triggers this warning so it's not a PyGtk issue. (attached) The C test however always displays the warning after the container remove action. So your assumption about PyGtk logger eating repeated warnings is probably correct. It could be a bug in my code I guess but as this has not been an issue in any of the previous versions it could be due to changes in GTK. I know that there has been some updates to the IM handling in 2.16, maybe that can have something to do with it? Thanks, Fredrik On Wed, Apr 1, 2009 at 1:20 PM, Tor Lillqvist <tml@xxxxxx> wrote: >> I just built and tested on gtk-2.16.0 on Linux and got the exact same >> assertion warning. > >> However you said I should only file a bug if it was not present on Linux. >> Any hints on what will happen now? > > Well, it could still be a bug in gtk+ of course, but maybe it is more > probable that it is a bug in your code, or in pygtk, then? > > --tml >
#include <gtk/gtk.h> struct cb_struct { GtkWidget *container; GtkWidget *widget; }; static void callback( GtkWidget *widget, gpointer *cb_data) { g_object_ref(G_OBJECT(((struct cb_struct*) cb_data)->widget)); gtk_container_remove(GTK_CONTAINER(((struct cb_struct*) cb_data)->container),GTK_WIDGET(((struct cb_struct*) cb_data)->widget)); gtk_box_pack_start (GTK_BOX(((struct cb_struct*) cb_data)->container), GTK_WIDGET(((struct cb_struct*) cb_data)->widget), TRUE, TRUE, 0); g_object_unref(G_OBJECT(((struct cb_struct*) cb_data)->widget)); } static gboolean delete_event( GtkWidget *widget, GdkEvent *event, gpointer data ) { gtk_main_quit (); return FALSE; } int main( int argc, char *argv[] ) { /* GtkWidget is the storage type for widgets */ GtkWidget *window; GtkWidget *button; GtkWidget *textview; GtkWidget *box1; struct cb_struct cb_data; /* This is called in all GTK applications. Arguments are parsed * from the command line and are returned to the application. */ gtk_init (&argc, &argv); window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW (window), "GTK 2.16.0 assertion warning test"); g_signal_connect (G_OBJECT (window), "delete_event", G_CALLBACK (delete_event), NULL); box1 = gtk_vbox_new (FALSE, 0); gtk_container_add (GTK_CONTAINER (window), box1); button = gtk_button_new_with_label ("Button 1"); gtk_box_pack_start (GTK_BOX(box1), button, TRUE, TRUE, 0); gtk_widget_show (button); textview = gtk_text_view_new (); cb_data.container = box1; cb_data.widget = textview; g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (callback),(gpointer) &cb_data); gtk_box_pack_start(GTK_BOX (box1), textview, TRUE, TRUE, 0); gtk_widget_show (textview); gtk_widget_show (box1); gtk_widget_show (window); /* Rest in gtk_main and wait for the fun to begin! */ gtk_main (); return 0; }
_______________________________________________ gtk-list mailing list gtk-list@xxxxxxxxx http://mail.gnome.org/mailman/listinfo/gtk-list