Self scrolling widgets (gtklayout, gtkclist,gtkctree, gtkviewport,
gtktext, and the next version of gtksheet) are added to a scrolledwindow
with their own viewport, and they have to draw the frame where they are
displayed. This can be seen in some of these
files in widget_class->expose_event and widget_class->draw as a
gtk_draw_shadow. Also, they have to spend effort in considering the
border_width with a lot of widget->style->klass->x/ythickness in the code.

I believe that a much more elegant way to deal with this is adding a
shadow_type field to the GtkScrolledWindow structure, and a
gtk_scrolled_window_set_shadow_type function. The default value is
GTK_SHADOW_NONE,
and the scrolledwindow works as the current gtkscrolledwindow. If you set
GTK_SHADOW_IN, a nice shadow frame appears arround the viewport. 

If this patch is implemented, the above mentioned widgets can be
re-written omiting all the x/ythickness code, and it became much easier to
deal with the adjustments and size allocation. In gtkviewport you can
remove gtk_viewport_paint, for example.

Regards,
<ADRIAN>
adrian@ifir.edu.ar