Ethereal-dev: [Ethereal-dev] Adding our own private widget for the packet list

Note: This archive is from the project's previous web site, ethereal.com. This list is no longer active.

From: Guy Harris <guy@xxxxxxxxxxxx>
Date: Tue, 30 Dec 2003 00:34:35 -0800
I have a tree in which, with GTK+ 1.2[.x] (but not 1.3[.x] or 2.x), we
use an EthClist widget for the packet list.

Currently, that widget is just the GTK+ 1.2[.x] GtkClist widget, from
"gtkclist_v12.[ch]", with a lot of global search and replace done.

However, that lets us, at least for the GTK+ 1.2[.x] users, make
performance and other improvements to the widget.  (It should also get
rid of problems on some platforms where supplying our own GtkClist
breaks things, e.g. AIX and, I think, some Darwin/Mac OS X builds - the
latter may be a problem only with dynamically-loaded GTK+ libraries; I
haven't seen it with my builds against a static GTK+ library.)

I have not done test builds against 1.3[.x] or 2.x.

We should probably either

	1) tweak the widget so that it can be built for GTK+ 1.2[.x],
	   1.3[.x], and 2.x (perhaps by looking at the differences
	   between 1.2[.x]'s and 2.x's GtkClists, and putting in
	   #ifdeffed code for those cases where the code has to differ
	   and using the "better" code in other cases)

or

	2) use the new GTK+ 2.x widget for displaying the packet list,
	   if the performance of that widget is acceptable (we'd
	   probably still have to have a #ifdeffed version for 1.3[.x]
	   if 1.3[.x] doesn't have the new tree widgets - I think 1.3[.x]
	   uses UTF-8 for strings, while 1.2[.x] doesn't).

I can send the patch out, along with the new "ethclist.[ch]" files. 
Note that the patch moves some code into "gtk/packet_list.c", so that
the GtkClist vs. EthClist stuff is localized.