Update of /project/mcclim/cvsroot/mcclim In directory clnet:/tmp/cvs-serv21571
Modified Files: presentation-defs.lisp Log Message: Fixed `presentation-history-previous' to work properly with an empty history.
--- /project/mcclim/cvsroot/mcclim/presentation-defs.lisp 2007/01/10 11:19:01 1.68 +++ /project/mcclim/cvsroot/mcclim/presentation-defs.lisp 2007/01/14 19:59:07 1.69 @@ -686,17 +686,19 @@ (if (and (numberp pointer) (zerop pointer)) (values nil nil) (progn - (if pointer - (decf pointer) - (setf pointer (1- (fill-pointer array)))) - (destructuring-bind (object . object-ptype) - (when (array-in-bounds-p array pointer) - (aref array pointer)) - (if object-ptype - (if (presentation-subtypep object-ptype ptype) - (values object object-ptype) - (progn (presentation-history-previous history ptype))) - (values nil nil))))))) + (cond ((and (numberp pointer) (plusp pointer)) + (decf pointer)) + ((plusp (length array)) + (setf pointer (1- (fill-pointer array))))) + (if (and (numberp pointer) (array-in-bounds-p array pointer)) + (destructuring-bind (object . object-ptype) + (aref array pointer) + (if object-ptype + (if (presentation-subtypep object-ptype ptype) + (values object object-ptype) + (progn (presentation-history-previous history ptype))) + (values nil nil))) + (values nil nil))))))
(defmacro with-object-on-history ((history object ptype) &body body) "Evaluate `body' with `object' as `ptype' as the head (most