If it's not a compose-space problem, I'm wondering about the code in incremental-redisplay.lisp. Could it be the case that
(defmethod incremental-redisplay ((stream updating-output-stream-mixin) position erases moves draws erase-overlapping move-overlapping) (declare (ignore position)) (let ((history (stream-output-history stream))) (with-output-recording-options (stream :record nil :draw t) (loop for (nil br) in erases do (erase-rectangle stream br)) (loop for (nil old-bounding) in moves do (erase-rectangle stream old-bounding)) (loop for (nil br) in erase-overlapping do (erase-rectangle stream br)) (loop for (nil old-bounding) in move-overlapping do (erase-rectangle stream old-bounding))) (loop for (r) in moves do (replay r stream)) (loop for (r) in draws do (replay r stream)) (let ((res +nowhere+)) (loop for (r) in erase-overlapping do (setf res (region-union res r))) (loop for (r) in move-overlapping do (setf res (region-union res r))) (replay history stream res)) ))
Does the Wrong Thing when the STREAM argument is an application pane, ignoring the viewport stuff, and so the region operations are done with the wrong bounding area? In particular, it seems like the draws are clipped, possibly because the region-union doesn't take into account the scroll-bar area.
This is just a theory, and actually doesn't feel quite right to me. But I'm bamboozled for why the stream has this odd clipping. Can anyone confirm or disprove it? Better yet, does anyone have a better theory to offer?
Thanks, R