(GnomeReplyCallback)on_DruidButtonOK_clicked_dialog_callback,
&reply); /* data */
g_signal_connect((gpointer)dialog,"close",G_CALLBACK(gtk_main_quit),NULL);
+ /* Never call gtk_main() from other thread than the initial one.
+ * We would have to switch GTK+ context (g_main_context()?).
+ */
gtk_main();
/* 'dialog' gets destroyed automatically */
if (reply==0) /* 0 for 'OK', 1 for 'Cancel', left -1 for dialog close. */
GtkCellRenderer *cell;
GtkBox *druid_button_box;
+ gdk_threads_enter();
+
App=GNOME_APP(create_App());
DriversTreeView=GTK_TREE_VIEW(lookup_widget(GTK_WIDGET(App),"DriversTreeView"));
gtk_widget_hide(GTK_WIDGET(Druid->finish));
DruidButtonSkip=GTK_BUTTON(gtk_button_new_from_stock(GTK_STOCK_REDO));
- gtk_container_foreach(GTK_CONTAINER(DruidButtonSkip),
- (GtkCallback)button_stock_set_label, /* callback */
- _("_Skip")); /* callback_data */
+ button_stock_set_label(
+ GTK_WIDGET(DruidButtonSkip), /* widget */
+ _("_Skip")); /* label_text_new */
gtk_box_pack_end(druid_button_box,GTK_WIDGET(DruidButtonSkip),FALSE,TRUE,0);
gtk_widget_show(GTK_WIDGET(DruidButtonSkip));
g_signal_connect((gpointer)DruidButtonSkip,"clicked",G_CALLBACK(on_DruidButtonSkip_clicked),NULL);
gtk_widget_show(GTK_WIDGET(DruidButtonOK));
g_signal_connect((gpointer)DruidButtonOK,"clicked",G_CALLBACK(on_DruidButtonOK_clicked),NULL);
- gtk_container_foreach(GTK_CONTAINER(PageFinish),
- (GtkCallback)PageFinish_set_label_attr, /* callback */
- NULL); /* callback_data */
+ PageFinish_set_label_attr(
+ GTK_WIDGET(PageFinish), /* widget */
+ NULL); /* callback_data; unused */
state_changed();
+
+ gdk_threads_leave();
}
static void ui_gnome_g_log_handler(const gchar *log_domain,GLogLevelFlags log_level,const gchar *message,gpointer user_data)
static void ui_gnome_interactive(void)
{
- gtk_widget_show_all(GTK_WIDGET(App));
+ gdk_threads_enter();
- if (!g_thread_supported())
- g_thread_init(NULL);
- if (!gdk_threads_mutex)
- gdk_threads_init();
+ /* Postpone gtk_widget_show_all() from App_init() here
+ * to have already passed all ui_gnome_module_available_notify().
+ */
+ gnome_druid_set_page(Druid,MicrosoftComPage);
+ gtk_widget_show_all(GTK_WIDGET(App));
+#if 0
+ /* gnome_druid_set_page(Druid,PageStart); */
+ gnome_druid_set_page(Druid,ScanDiskPage);
+ gnome_druid_set_page(Druid,ScanPathPage);
+ /* gnome_druid_set_page(Druid,MicrosoftComPage); */
+ gnome_druid_set_page(Druid,PageFinish);
+#endif
+ gnome_druid_set_page(Druid,PageStart);
- gdk_threads_enter();
gtk_main();
+
gdk_threads_leave();
+
exit(EXIT_SUCCESS);
}
ui_interactive=ui_gnome_interactive;
captivemodid_module_best_priority_notify=ui_gnome_module_best_priority_notify;
+ /* gdk_threads_init() must be called before gtk_init()!
+ * gtk_init() gets called by create_App() here.
+ */
+ if (!g_thread_supported())
+ g_thread_init(NULL);
+ if (!gdk_threads_mutex)
+ gdk_threads_init();
+
/* Graphic widgets will all be hidden yet. */
App_init();
/* ui_gnome_g_log_handler() needs 'App'. */