This function is used to abort 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"))
Also see the examples in the directory
examples/capi/dialogs/
.