Re: Calling specific method
"Tim Bradshaw (as tfb at cley dot com)" <[email protected]> Sat, 18 Apr 2026 12:16:00 +0100
| Newsgroups | gmane.lisp.lispworks.general |
|---|---|
| Message-ID | <[email protected]> |
The version I posted is broken, I have a better one but I'm away till Tue: let me know if you want it. > On 18 Apr 2026, at 09:48, Erik Ronström (as erik dot ronstrom at doremir dot com) <[email protected]> wrote: > > Oh, that's a nice approach! Thanks a lot! > > Erik > >>> On 17 Apr 2026, at 18:12, Tim Bradshaw (as tfb at cley dot com) <[email protected]> wrote: >> >> If you (rather than the system) are calling MPDC then it's likely better to write your own, in terms of a GF called, say, walk-pane-p which will normally return t but will have a method returning nil for your pane. You can use map-pane-children to do each level. > > This is an attempt at that. Caveat emptor > > (defgeneric walk-pane-p (pane) > ;; Define a method on this for a class you don't want to walk > (:method (pane) > (declare (ignorable pane)) > t)) > > (defun mpdc (pane f &key visible test reverse leaf-only) > (let ((pane-leaf t)) > (when (walk-pane-p pane) > (map-pane-children pane (lambda (c) > (setf pane-leaf nil) > (mpdc c f > :visible visible :test test :reverse reverse > :leaf-only leaf-only)) > :reverse reverse)) > (when (and (or (not test) (funcall test pane)) > (or (not visible) (interface-visible-p pane)) > (or (not leaf-only) pane-leaf)) > (funcall f pane))) > > > _______________________________________________ > Lisp Hug - the mailing list for LispWorks users > [email protected] > http://www.lispworks.com/support/lisp-hug.html _______________________________________________ Lisp Hug - the mailing list for LispWorks users [email protected] http://www.lispworks.com/support/lisp-hug.html