I'm not sure I understand the problem exactly, but maybe this will help: I
believe if you gdk_gc_set_exposures() then you'll get a "NoExpose" event
as soon as you gdk_window_copy_area() to perform the scroll. The
"NoExpose" event will be between the two sets of exposes (i.e. exposes
after the NoExpose are translated with respect to exposes before it).
(Read the Xlib manual on this; of course, if you copy_area() from an
obscured region you get exposes instead of NoExpose). I'm not sure what
processing Gtk does on all this; Raph Levien alluded to some possible
problems with it. He or Owen could tell you more.
Havoc