The function abort-dialog
aborts the current dialog. For example, it can be made a selection callback from a
Cancel
button so that pressing the button aborts the dialog. In a similar manner the complementary function exit-dialog can be used as a callback for an
OK
button.
If there is no current dialog then abort-dialog
does nothing and returns nil
. If there is a current dialog then abort-dialog
either returns non-nil or does a non-local exit. Therefore code that depends on abort-dialog
returning must be written carefully. Constructs like this can be useful:
(unless (capi:abort-dialog)
(foo))
Above, foo will be called only if there is no current dialog.
It is not useful to do either:
(when (capi:abort-dialog)
(foo))
(progn
(capi:abort-dialog)
(foo))
as in both cases it is not well-defined whether foo will be called if there is a current dialog.
(capi:display-dialog
(capi:make-container
(make-instance 'capi:push-button
:text "Cancel"
:callback 'capi:abort-dialog)
:title "Test Dialog"))
(example-edit-file "capi/dialogs/")
CAPI User Guide and Reference Manual (Macintosh version) - 3 Aug 2017