

Use the new GtkFileChooser widget if compiling against GTK 2.4.



diff -puN switch.c~file-chooser switch.c
--- gtk-theme-switch-2.0.0rc2/switch.c~file-chooser	2004-03-21 09:04:01.393954784 -0600
+++ gtk-theme-switch-2.0.0rc2-arashi/switch.c	2004-03-21 09:23:07.157772208 -0600
@@ -252,14 +252,31 @@ static void
 install_clicked (GtkWidget *w, gpointer data)
 {
 	GtkWidget *checkbutton = gtk_check_button_new_with_label ("Switch to theme after installation");
-	GtkWidget *fs = gtk_file_selection_new ("Select a GTK theme tarball");
+	GtkWidget *fs;
+
+	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(checkbutton), FALSE);
+
+#if GTK_CHECK_VERSION(2,4,0)
+	fs = gtk_file_chooser_dialog_new ("Select a GTK theme tarball", GTK_WINDOW(dockwin), GTK_FILE_CHOOSER_ACTION_OPEN, GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, NULL);
+	gtk_file_chooser_set_extra_widget(GTK_FILE_CHOOSER(fs), checkbutton);
+
+	g_object_set_data (G_OBJECT(fs), "checkbutton", checkbutton);
+
+	if (gtk_dialog_run(GTK_DIALOG(fs)) == GTK_RESPONSE_ACCEPT) {
+		install_ok_clicked(NULL, fs);
+	}
+
+	gtk_widget_destroy(fs);
+#else
+	fs = gtk_file_selection_new ("Select a GTK theme tarball");
 	g_signal_connect(G_OBJECT(GTK_FILE_SELECTION(fs)->ok_button), "clicked", G_CALLBACK(install_ok_clicked), fs);
 	g_signal_connect_swapped(G_OBJECT(GTK_FILE_SELECTION(fs)->cancel_button), "clicked", G_CALLBACK(gtk_widget_destroy), (gpointer)fs);
 	gtk_box_pack_start (GTK_BOX(GTK_FILE_SELECTION(fs)->main_vbox), checkbutton, FALSE, FALSE, 0);
-	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(checkbutton), FALSE);
+
 	g_object_set_data (G_OBJECT(fs), "checkbutton", checkbutton);
 	gtk_widget_show(checkbutton);
 	gtk_widget_show(fs);
+#endif
 }
 
 static void
@@ -270,7 +287,11 @@ install_ok_clicked (GtkWidget *w, gpoint
 	gint i, pos;
 	short slashes=0;
 	gboolean cbstate=gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(g_object_get_data(G_OBJECT(data), "checkbutton")));
+#if GTK_CHECK_VERSION(2,4,0)
+	filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(data));
+#else
 	filename = gtk_file_selection_get_filename(GTK_FILE_SELECTION(data));
+#endif
      	thn = g_strdup(filename);
 	search_for_theme_or_die_trying(thn, &rc_file);
      	g_free(thn);

_
