The files in this directory implement a proof-of-concept for having
subparts of a GTK widget tree not be managed by GTK and subparts
of those be managed again.

There are three components in this directory:

 GdkSuperWin: A pseudo-object which is meant to be basically
              a GdkWindow + scrolling. It is implemented as two
              nested windows with guffaw scrolling and a 
              queue of previous offsets.

 GtkMozArea:  A widget that has a GdkSuperWin as widget->window, 
              it serves as the GTK => Mozilla bridge

 GtkMozBox:   A descendant of GtkWindow that is used as a subwindow
              of another GdkWindow; it serves as the Mozilla => GTK
              bridge.

And a simple test program (mozbox_test). 

It's pretty far from complete.

TODO (SuperWin)
===============

- Handle mapping and unmapping child windows. You'd need to keep
  track of all the child GdkWindows, their "logical" positions
  int int coordinates and their logical map state. This may
  be be most efficient to do with nsWidget rather than here 
  if that information is already beeing tracked.

- Pass everything except exposes back into GDK with GDK_FILTER_TRANSLATE
  to make integrating with existing GdkEvent handling code easier.
  We do need to siphon off the exposes because GTK+ may throw away
  exposes on windows it is later going to redraw with a ::draw
  signal.

- Handle the predictable expose events immediately. as GtkLayout does.
  (Implement gdk_superwin_expose_area()). The basic idea is that
  things will look better the faster we redraw the newly exposed
  areas. Avoiding double draws takes some care. (I have some
  ideas, but the best way to do it probably depends on the Mozilla
  drawing model.)

Owen Taylor <otaylor@redhat.com>
September 11, 1999.