-(defmethod shared-initialize ((widget widget) names &rest initargs &key parent)
- (remf initargs :parent)
- (prog1
- (apply #'call-next-method widget names initargs)
- (when parent
- (when (slot-boundp widget 'parent)
- (container-remove (widget-parent widget) widget))
- (let ((parent-widget (first (mklist parent)))
- (args (rest (mklist parent))))
- (apply #'container-add parent-widget widget args)))))
+(defmethod shared-initialize ((widget widget) names &key (visible nil visible-p))
+ (when (and visible-p (not visible)) ; widget explicit set as not visible
+ (setf (user-data widget 'hidden-p) t)
+ (signal-connect widget 'show
+ #'(lambda ()
+ (unset-user-data widget 'hidden-p))
+ :remove t))
+ (call-next-method))