+
+(define-layered-method attribute-active-p :around ((attribute slot-definition-attribute))
+ (let ((active? (slot-value attribute 'activep)))
+ (if (and (eq :when active?)
+ (unbound-slot-value-p (attribute-value attribute)))
+ NIL
+
+ (call-next-method))))
+
+(define-layered-method attribute-active-p
+ :in-layer #.(defining-description 'editable)
+ :around ((attribute slot-definition-attribute))
+ (let ((active? (slot-value attribute 'activep)))
+ (if (and (eq :when active?)
+ (unbound-slot-value-p (attribute-value attribute)))
+ t
+ (call-next-method))))
+