diff -x '*.obj' -x config.nmake -x config.h -x '*.dll' -x '*.lib' -x '*.pdb' -x '*.rc' -x '*.exp' -x '*register.c' -r -u --strip-trailing-cr .\ethereal-2003-10-22/capture.c .\src/capture.c
--- .\ethereal-2003-10-22/capture.c	2003-10-11 23:49:56.000000000 +0200
+++ .\src/capture.c	2003-10-23 09:51:18.000000000 +0200
@@ -69,6 +69,7 @@
 #endif
 
 #include <gtk/gtk.h>
+#include "gtk/compat_macros.h"
 #include <stdlib.h>
 #include <stdio.h>
 #include <ctype.h>
@@ -1403,20 +1404,20 @@
   struct {
       const gchar *title;
       gint *value_ptr;
-      GtkWidget *label, *value, *percent;
+      GtkWidget *label, *value, *pbar, *percent;
   } counts[] = {
-      { "Total", &ld.counts.total, NULL, NULL, NULL },
-      { "SCTP", &ld.counts.sctp, NULL, NULL, NULL },
-      { "TCP", &ld.counts.tcp, NULL, NULL, NULL },
-      { "UDP", &ld.counts.udp, NULL, NULL, NULL },
-      { "ICMP", &ld.counts.icmp, NULL, NULL, NULL },
-      { "ARP", &ld.counts.arp, NULL, NULL, NULL },
-      { "OSPF", &ld.counts.ospf, NULL, NULL, NULL },
-      { "GRE", &ld.counts.gre, NULL, NULL, NULL },
-      { "NetBIOS", &ld.counts.netbios, NULL, NULL, NULL },
-      { "IPX", &ld.counts.ipx, NULL, NULL, NULL },
-      { "VINES", &ld.counts.vines, NULL, NULL, NULL },
-      { "Other", &ld.counts.other, NULL, NULL, NULL }
+      { "Total", &ld.counts.total, NULL, NULL, NULL, NULL },
+      { "SCTP", &ld.counts.sctp, NULL, NULL, NULL, NULL },
+      { "TCP", &ld.counts.tcp, NULL, NULL, NULL, NULL },
+      { "UDP", &ld.counts.udp, NULL, NULL, NULL, NULL },
+      { "ICMP", &ld.counts.icmp, NULL, NULL, NULL, NULL },
+      { "ARP", &ld.counts.arp, NULL, NULL, NULL, NULL },
+      { "OSPF", &ld.counts.ospf, NULL, NULL, NULL, NULL },
+      { "GRE", &ld.counts.gre, NULL, NULL, NULL, NULL },
+      { "NetBIOS", &ld.counts.netbios, NULL, NULL, NULL, NULL },
+      { "IPX", &ld.counts.ipx, NULL, NULL, NULL, NULL },
+      { "VINES", &ld.counts.vines, NULL, NULL, NULL, NULL },
+      { "Other", &ld.counts.other, NULL, NULL, NULL, NULL }
   };
 
 #define N_COUNTS (sizeof counts / sizeof counts[0])
@@ -1738,38 +1739,55 @@
   gtk_widget_show(counts_fr);
 
   /* Individual statistic elements */
-  counts_tb = gtk_table_new(N_COUNTS, 3, TRUE);
+  counts_tb = gtk_table_new(N_COUNTS, 4, TRUE);
   gtk_container_add(GTK_CONTAINER(counts_fr), counts_tb);
   gtk_container_border_width(GTK_CONTAINER(counts_tb), 5);
   gtk_widget_show(counts_tb);
 
+  gtk_table_set_row_spacings(GTK_TABLE(counts_tb), 0);
+  gtk_table_set_col_spacings(GTK_TABLE(counts_tb), 5);
+
   for (i = 0; i < N_COUNTS; i++) {
       counts[i].label = gtk_label_new(counts[i].title);
-      gtk_misc_set_alignment(GTK_MISC(counts[i].label), 0.0f, 0.0f);
+      gtk_misc_set_alignment(GTK_MISC(counts[i].label), 0.0f, 0.5f);
 
       counts[i].value = gtk_label_new("0");
-      gtk_misc_set_alignment(GTK_MISC(counts[i].value), 0.0f, 0.0f);
+      gtk_misc_set_alignment(GTK_MISC(counts[i].value), 0.5f, 0.5f);
+
+      if (i == 0) {
+          /* do not build a progress bar for the "total" row */
+          /* (as this could suggest a "buffer full" to the user) */
+          counts[i].pbar = gtk_label_new("Histogram");
+      } else {
+          /* build a progress bar in the other rows */
+          counts[i].pbar = gtk_progress_bar_new();
+
+          /* downsize the default size of this progress bar in x direction (def:150), */
+          /* otherwise it will become too large and the dialog will look ugly */
+          /* XXX: use a ctree instead of a table in order to fix this */
+          WIDGET_SET_SIZE(counts[i].pbar, 70, -1);
+      }
 
       counts[i].percent = gtk_label_new("0.0%");
-      gtk_misc_set_alignment(GTK_MISC(counts[i].percent), 0.0f, 0.0f);
+      gtk_misc_set_alignment(GTK_MISC(counts[i].percent), 1.0f, 0.5f);
 
       gtk_table_attach_defaults(GTK_TABLE(counts_tb),
                                 counts[i].label, 0, 1, i, i + 1);
-
-      gtk_table_attach(GTK_TABLE(counts_tb),
-                       counts[i].value,
-                       1, 2, i, i + 1, 0, 0, 5, 0);
-
       gtk_table_attach_defaults(GTK_TABLE(counts_tb),
-                                counts[i].percent, 2, 3, i, i + 1);
+                                counts[i].value, 1, 2, i, i + 1);
+      gtk_table_attach_defaults(GTK_TABLE(counts_tb),
+                                counts[i].pbar, 2, 3, i, i + 1);
+      gtk_table_attach_defaults(GTK_TABLE(counts_tb),
+                                counts[i].percent, 3, 4, i, i + 1);
 
       gtk_widget_show(counts[i].label);
       gtk_widget_show(counts[i].value);
+      gtk_widget_show(counts[i].pbar);
       gtk_widget_show(counts[i].percent);
   }
 
   /* Running time */
-  running_tb = gtk_table_new(1, 3, TRUE);
+  running_tb = gtk_table_new(1, 4, TRUE);
   gtk_box_pack_start(GTK_BOX(main_vb), running_tb, FALSE, FALSE, 3);
   gtk_widget_show(running_tb);
 
@@ -1966,10 +1984,15 @@
         for (i = 0; i < N_COUNTS; i++) {
             snprintf(label_str, sizeof(label_str), "%d",
                      *counts[i].value_ptr);
-
             gtk_label_set(GTK_LABEL(counts[i].value), label_str);
 
-            snprintf(label_str, sizeof(label_str), "(%.1f%%)",
+            /* don't try to update the "total" row progress bar */
+            if (i != 0) {
+                gtk_progress_bar_update(GTK_PROGRESS_BAR(counts[i].pbar),
+                         pct(*counts[i].value_ptr, ld.counts.total) / 100.0);
+            }
+
+            snprintf(label_str, sizeof(label_str), "%.1f%%",
                      pct(*counts[i].value_ptr, ld.counts.total));
 
             gtk_label_set(GTK_LABEL(counts[i].percent), label_str);
