Update of /project/mcclim/cvsroot/mcclim/Drei In directory clnet:/tmp/cvs-serv1041/Drei
Modified Files: drei-redisplay.lisp Log Message: Export OUTPUT-RECORD-BASELINE from CLIM-EXTENSIONS.
Use OUTPUT-RECORD-BASELINE to make Drei more inteligent.
--- /project/mcclim/cvsroot/mcclim/Drei/drei-redisplay.lisp 2008/02/03 07:16:49 1.59 +++ /project/mcclim/cvsroot/mcclim/Drei/drei-redisplay.lisp 2008/02/03 18:49:56 1.60 @@ -730,6 +730,7 @@ region, which will be presented with its appropriate presentation type (found via `presentation-type-of') to generate output." (let (output-record + baseline (widths (make-array 2 :initial-contents (list 0 0))) (parts (list 0 1))) #'(lambda (stream view stroke cursor-x cursor-y @@ -741,7 +742,8 @@ (when (or (null output-record) (stroke-modified stroke)) (setf output-record (with-output-to-output-record (stream) - (present object (presentation-type-of object) :stream stream)))) + (present object (presentation-type-of object) :stream stream)) + baseline (clim-extensions:output-record-baseline output-record))) ;; You will not believe this! If `cursor-x' is 0, it seems ;; like the changing position is ignored. So add some ;; minuscule amount to it, and all will be well. 0.1 @@ -749,14 +751,14 @@ (let ((width (bounding-rectangle-width output-record)) (height (bounding-rectangle-height output-record))) (setf (output-record-position output-record) - (values (+ cursor-x 0.1) (- cursor-y height))) + (values (+ cursor-x 0.1) (- cursor-y baseline))) (when draw (replay output-record stream)) (setf (aref widths 1) width) (record-stroke stroke parts widths cursor-x (- cursor-y height) (+ width cursor-x) cursor-y - draw height))))))) + draw baseline)))))))
(defmethod pump-state-for-offset ((view drei-buffer-view) (offset integer)) "For a `drei-buffer-view' a pump-state is merely an offset into