Index: client/gui-gtk-2.0/helpdlg.c
===================================================================
RCS file: /home/freeciv/CVS/freeciv/client/gui-gtk-2.0/helpdlg.c,v
retrieving revision 1.11
diff -u -r1.11 helpdlg.c
--- client/gui-gtk-2.0/helpdlg.c	2002/11/14 09:14:55	1.11
+++ client/gui-gtk-2.0/helpdlg.c	2002/12/16 08:38:26
@@ -60,7 +60,8 @@
 static GtkTextBuffer *help_text;
 static GtkWidget *help_text_sw;
 static GtkWidget *help_vbox;
-static GtkWidget *unit_tile;
+static GtkWidget *help_sprite;
+static GtkWidget *help_sprite_container;
 static GtkWidget *help_box;
 static GtkWidget *help_itable;
 static GtkWidget *help_wtable;
@@ -334,15 +335,13 @@
 {
   gtk_widget_hide(help_box);
 
-  gtk_widget_hide(unit_tile);
+  gtk_widget_hide(help_sprite_container);
 
   gtk_widget_hide(help_itable);
   gtk_widget_hide(help_wtable);
   gtk_widget_hide(help_utable);
   gtk_widget_hide(help_ttable);
   
-  gtk_widget_hide(unit_tile);
-
   gtk_widget_hide(help_vbox);
   gtk_widget_hide(help_text_sw);
 
@@ -351,6 +350,21 @@
 }
 
 /**************************************************************************
+  Reallocate the sprite's pixcomm to be the new size.
+**************************************************************************/
+static void help_sprite_realloc(int width, int height)
+{
+  if (help_sprite) {
+    gtk_container_remove(GTK_CONTAINER(help_sprite_container),
+			 help_sprite);
+    gtk_widget_unref(help_sprite);
+  }
+  help_sprite = gtk_pixcomm_new(width, height);
+  gtk_container_add(GTK_CONTAINER(help_sprite_container), help_sprite);
+  gtk_widget_ref(help_sprite);
+}
+
+/**************************************************************************
 ...
 **************************************************************************/
 static void help_destroy_callback(GtkWidget *w, gpointer data)
@@ -487,8 +501,9 @@
   help_box = gtk_vbox_new(FALSE, 5);
   gtk_container_add(GTK_CONTAINER(help_frame), help_box);
 
-  unit_tile = gtk_pixcomm_new(UNIT_TILE_WIDTH, UNIT_TILE_HEIGHT);
-  gtk_box_pack_start(GTK_BOX(help_box), unit_tile, FALSE, FALSE, 0);
+  help_sprite_container = gtk_hbox_new(FALSE, 0);
+  gtk_box_pack_start(GTK_BOX(help_box), help_sprite_container,
+		     FALSE, FALSE, 0);
 
   help_itable = gtk_table_new(1, 6, FALSE);
   gtk_box_pack_start(GTK_BOX(help_box), help_itable, FALSE, FALSE, 0);
@@ -674,6 +689,12 @@
       gtk_set_label(help_ilabel[5], advances[imp->tech_req].name);
     }
 /*    create_tech_tree(help_improvement_tree, 0, imp->tech_req, 3);*/
+
+    if (imp->sprite) {
+      help_sprite_realloc(imp->sprite->width, imp->sprite->height);
+      gtk_pixcomm_copyto(GTK_PIXCOMM(help_sprite), imp->sprite, 0, 0);
+      gtk_widget_show_all(help_sprite_container);
+    }
   }
   else {
     gtk_set_label(help_ilabel[1], "0");
@@ -768,9 +789,9 @@
     gtk_text_buffer_set_text(help_text, buf, -1);
     gtk_widget_show(help_text_sw);
 
-    create_overlay_unit(unit_tile
-    , i);
-    gtk_widget_show(unit_tile);
+    help_sprite_realloc(UNIT_TILE_WIDTH, UNIT_TILE_HEIGHT);
+    create_overlay_unit(help_sprite, i);
+    gtk_widget_show_all(help_sprite_container);
   }
   else {
     gtk_set_label(help_ulabel[0][1], "0");
@@ -853,6 +874,13 @@
     gtk_text_view_set_editable(GTK_TEXT_VIEW(w), FALSE);
     gtk_box_pack_start(GTK_BOX(help_vbox), w, TRUE, TRUE, 0);
     gtk_widget_show(w);
+
+    if (advances[i].sprite) {
+      help_sprite_realloc(advances[i].sprite->width,
+			  advances[i].sprite->height);
+      gtk_pixcomm_copyto(GTK_PIXCOMM(help_sprite), advances[i].sprite, 0, 0);
+      gtk_widget_show_all(help_sprite_container);
+    }
 
     txt = gtk_text_view_get_buffer(GTK_TEXT_VIEW(w));
     if (txt) {
