I'm resending this patch (this time as a unified diff) to gadgets.lisp as, apparently, it has been overlooked. Perhaps I was a bit too terse when sending the patch the first time around.
This patch is a one-line bug fix, which I believe stems from a change in standard-rectangle. Previously, rectangle coordinates were stored in slots (x1 y1 x2 y2) within standard-rectangle. In an attempt to optimize rectangle operations, these were condensed into a single coordinates slot. The problem is that an :after method on initialize-instance for gadget-output-record was never notified of said change, and was still attempting to call (with-slots (x1 x2 y1 y2) ...) on a standard rectangle. This was causing problems for me, so I swapped in a destructuring-bind on coordinates instead.
Anthony W. Juckel
Index: gadgets.lisp
@@ -2700,7 +2700,7 @@ (height (space-requirement-height sr))) (allocate-space child width height) (setf (gadget record) child)
- (with-slots (x1 x2 y1 y2) record
- (multiple-value-bind (x1 y1 x2 y2) (slot-value record 'coordinates)
Try this instead:
(multiple-value-bind (x1 y1 x2 y2) (rectangle-edges* record)
Using internal state of classes is a no-no. Use the interfaces provided by the spec.
Mike McDonald mikemac@mikemac.com