+@RMethod dialog-run
+@lisp
+(dialog-run dialog) @result{} response
+@end lisp
+
+Blocks in a recursive main loop until the dialog either emits the @SignalRef{dialog,response} signal, or is destroyed. If the dialog is destroyed during the call to @ref{dialog-run}, it returns @EnumVRef{response-type,none}. Otherwise, it returns the response ID from the @SignalRef{dialog,response} signal emission.
+
+Before entering the recursive main loop, @ref{dialog-run} calls @code{widget-show} on the dialog for you. Note that you still need to show any children of the dialog yourself.
+
+During @ref{dialog-run}, the default behavior of @SignalRef{widget,delete-event} is disabled; if the dialog receives @SignalRef{widget,delete-event}, it will not be destroyed as windows usually are, and @ref{dialog-run} will return @EnumVRef{response-type,delete-event}. Also, during @ref{dialog-run} the dialog will be modal. You can force @ref{dialog-run} to return at any time by calling @ref{dialog-response} to emit the @SignalRef{dialog,response} signal. Destroying the dialog during @ref{dialog-run} is a very bad idea, because your post-run code won't know whether the dialog was destroyed or not.
+
+After @ref{dialog-run} returns, you are responsible for hiding or destroying the dialog if you wish to do so.
+
+Note that even though the recursive main loop gives the effect of a modal dialog (it prevents the user from interacting with other windows in the same window group while the dialog is run), callbacks such as timeouts, IO channel watches, DND drops, etc, will be triggered during a @ref{dialog-run} call.
+
+@RMethod dialog-response
+@lisp
+(dialog-response dialog response)
+@end lisp
+
+Emits the @SignalRef{dialog,response} signal with the given @var{response} (of type @ref{response-type}). Used to indicate that the user has responded to the @var{dialog} in some way; typically either you or @ref{dialog-run} will be monitoring the @SignalRef{dialog,response} signal and take appropriate action.
+
+@RMethod dialog-add-button
+@lisp
+(dialog-add-button dialog text response) @result{} button
+@end lisp
+
+Adds a button with the given @var{text} (or a stock button, if @var{text} is a stock ID) and sets things up so that clicking the button will emit the @SignalRef{dialog,response} signal with the given @var{response}. The button is appended to the end of the dialog's action area. The @ref{button} widget is returned, but usually you don't need it.
+
+@RMethod dialog-add-action-widget
+@lisp
+(dialog-add-action-widget dialog widget response)
+@end lisp
+
+Adds an activatable @var{widget} to the action area of a @var{dialog}, connecting a signal handler that will emit the @SignalRef{dialog,response} signal on the dialog when the @var{widget} is activated. The @var{widget} is appended to the end of the dialog's action area. If you want to add a non-activatable widget, simply pack it into the @SlotRef{dialog,action-area} field of the @ref{dialog}.
+
+@RMethod dialog-set-response-sensitive
+@lisp
+(dialog-set-response-sensitive dialog response setting)
+@end lisp
+
+Sets the @SlotRef{widget,sensitive} for each widget in the dialog's action area with the given @var{response}. A convenient way to sensitize/desensitize dialog buttons.
+
+@RMethod dialog-response-for-widget
+@lisp
+(dialog-response-for-widget dialog widget) @result{} response
+@end lisp
+
+Gets the @var{response} (of type @ref{response-type}) of a @var{widget} in the action area of a @var{dialog}.
+
+@RMethod dialog-alternative-button-order-on-screen
+@lisp
+(dialog-alternative-button-order-on-screen screen) @result{} boolean
+@end lisp
+
+Returns True if dialogs are expected to use an alternative button order on the @ref{screen} @var{screen}. See @SlotRef{dialog,alternative-button-order} for more details about alternative button order.