Calls a function on each of a pane's children.
capi
map-pane-children pane function &key visible test reverse
| pane⇩ | 
A CAPI pane. | 
| function⇩ | 
A function of one argument. | 
| visible⇩ | 
A boolean. The default value is  nil. | 
| test⇩ | 
A function of one argument, or  nil. The default isnil. | 
| reverse⇩ | 
A boolean. The default value is  nil. | 
The generic function map-pane-children applies function to pane's immediate children.
If visible is true, then function is applied only to the visible children.
If test is non-nil, it is a function which is applied first to each child, and only those for which test returns a true value are then passed to function.
If reverse is non-nil, the order in which the children are processed is reversed.
This example constructs a pinboard containing random ellipses. A repainting function is mapped over them, restricted to those with width greater than height.
(defun random-color () 
  (aref #(:red :blue :green :yellow :cyan 
          :magenta :pink :purple :black :white) 
        (random 10)))
 
(defun random-origin () 
  (list (random 350) (random 250)))
 
(defun random-size () 
  (list (+ 10 (random 40)) 
        (+ 10 (random 40))))
 
(setf ellipses
      (capi:contain 
       (make-instance 
        'capi:pinboard-layout 
        :children 
        (loop for i below 40
              for origin = (random-origin)
              for size = (random-size)
              collect 
              (make-instance 'capi:ellipse 
                             :x (first origin) 
                             :y (second origin)
                             :width (first size) 
                             :height (second size)
                             :graphics-args 
                             (list :foreground 
                                   (random-color)) 
                             :filled t)))))
 
(defun repaint (ellipse) 
  (setf (capi:pinboard-object-graphics-args ellipse)
       (list :foreground (random-color)))
  (capi:redraw-pinboard-object ellipse t))
 
(defun widep (ellipse)
  (capi:with-geometry ellipse
      (> capi:%width% capi:%height%)))
 
(capi:map-pane-children ellipses 'repaint :test 'widep)
CAPI User Guide and Reference Manual (Macintosh version) - 01 Dec 2021 19:31:27