Both of the attached modifications of the program appears to work properly every time.
So is my problem that the label isn't actually ready to be drawn on the first call to sleep() for some reason? -- MELVILLE THEATRE ~ Real D 3D Digital Cinema ~ www.melvilletheatre.com www.creekfm.com - FIFTY THOUSAND WATTS of POW WOW POWER!
#include <gtk/gtk.h> void subroutine(GtkWidget *button, gpointer data); gboolean sleeper(GtkWidget *subwindow); int main( int argc, char *argv[]) { GtkWidget *window, *button; gtk_init(&argc, &argv); window=gtk_window_new(GTK_WINDOW_TOPLEVEL); g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(gtk_main_quit), NULL); button=gtk_button_new_from_stock(GTK_STOCK_OK); g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(subroutine), NULL); gtk_container_add(GTK_CONTAINER(window),button); gtk_widget_show_all(window); gtk_main(); return 0; } void subroutine(GtkWidget *button, gpointer data) { gint x; GtkWidget *subwindow, *vbox,*label; subwindow=gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_default_size(GTK_WINDOW(subwindow), 400, 50); vbox=gtk_vbox_new(FALSE,0); gtk_container_add(GTK_CONTAINER(subwindow),vbox); label=gtk_label_new("Label"); gtk_container_add(GTK_CONTAINER(vbox),label); gtk_widget_show_all(subwindow); for (x=0; x < 3000; x++) { while (g_main_context_iteration(NULL, FALSE)); g_idle_add_full(G_PRIORITY_LOW,(GSourceFunc)sleeper,(gpointer)subwindow,NULL); } gtk_widget_destroy(subwindow); return; } gboolean sleeper(GtkWidget *subwindow) { g_usleep(1000); return FALSE; }
#include <gtk/gtk.h> void subroutine(GtkWidget *button, gpointer data); void sleeper(); int main( int argc, char *argv[]) { GtkWidget *window, *button; gtk_init(&argc, &argv); window=gtk_window_new(GTK_WINDOW_TOPLEVEL); g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(gtk_main_quit), NULL); button=gtk_button_new_from_stock(GTK_STOCK_OK); g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(subroutine), NULL); gtk_container_add(GTK_CONTAINER(window),button); gtk_widget_show_all(window); gtk_main(); return 0; } void subroutine(GtkWidget *button, gpointer data) { gint x; GtkWidget *subwindow, *vbox,*label; subwindow=gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_default_size(GTK_WINDOW(subwindow), 400, 50); vbox=gtk_vbox_new(FALSE,0); gtk_container_add(GTK_CONTAINER(subwindow),vbox); label=gtk_label_new("Label"); gtk_container_add(GTK_CONTAINER(vbox),label); gtk_widget_show_all(subwindow); for (x=0; x < 3000; x++) sleeper(); gtk_widget_destroy(subwindow); return; } void sleeper() { while (g_main_context_iteration(NULL, FALSE)); g_usleep(1000); return; }
_______________________________________________ gtk-app-devel-list mailing list gtk-app-devel-list@gnome.org https://mail.gnome.org/mailman/listinfo/gtk-app-devel-list