.
An object which displays itself on the screen and acts on user input gestures. Gadgets have the following slots:
| pref-dim | a cached value for pref-dim; do not read or write this slot directly. | 
| parent | the gadget containing this one, or f if this gadget is not part of the visible gadget hierarchy. | 
| children | a vector of child gadgets. Do not modify this vector directly, instead use add-gadget, add-gadgets, unparent or clear-gadget. | 
| graft-state | a pair of boolean values that represent the current graft state of the gadget and what its next state will become. | 
| orientation | an orientation specifier. This slot is used by layout gadgets. | 
| layout-state | stores the layout state of the gadget. Do not read or write this slot directly, instead call relayout and relayout-1 if the gadget needs to be re-laid out. | 
| visible? | a boolean indicating if the gadget should display and receive user input. | 
| root? | if set to t, layout changes in this gadget will not propagate to the gadget's parent. | 
| clipped? | a boolean indicating if clipping will be enabled when drawing this gadget's children. | 
| interior | an implementation of the UI pen protocol | 
| boundary | an implementation of the UI pen protocol | 
| model | a model or f; see Implementing controls | 
 instances holding their location and dimensions.
.