Update of /project/mcclim/cvsroot/mcclim In directory common-lisp.net:/tmp/cvs-serv18663
Modified Files: recording.lisp Log Message: %handle-repaint derives the bounding rectangle for region. There are two cases where region does not participate in the bounding rectangle protocol: +everywhere+ and +nowhere+, the only two regions in the unbound region class. For +everywhere+, fallback to the bounding rectangle of sheet. For +nowhere+, ignore repaint.
Date: Fri Jan 13 13:18:11 2006 Author: cfruhwirth
Index: mcclim/recording.lisp diff -u mcclim/recording.lisp:1.120 mcclim/recording.lisp:1.121 --- mcclim/recording.lisp:1.120 Thu Dec 1 12:10:55 2005 +++ mcclim/recording.lisp Fri Jan 13 13:17:55 2006 @@ -2237,11 +2237,14 @@
(defun %handle-repaint (stream region) (when (output-recording-stream-p stream) - (let ((region (bounding-rectangle region))) - (with-bounding-rectangle* (x1 y1 x2 y2) region - (with-output-recording-options (stream :record nil) - (draw-rectangle* stream x1 y1 x2 y2 :filled T :ink +background-ink+))) - (stream-replay stream region)))) + (unless (region-equal region +nowhere+) ; ignore repaint requests for +nowhere+ + (let ((region (if (region-equal region +everywhere+) + (sheet-region stream) ; fallback to the sheet's region for +everwhere+ + (bounding-rectangle region)))) + (with-bounding-rectangle* (x1 y1 x2 y2) region + (with-output-recording-options (stream :record nil) + (draw-rectangle* stream x1 y1 x2 y2 :filled T :ink +background-ink+))) + (stream-replay stream region)))))
(defmethod handle-repaint ((stream output-recording-stream) region) (%handle-repaint stream region))