Blocks in a recursive main loop until the this either emits the response signal, or is destroyed.
Before entering the recursive main loop, run calls show on the dialog for you. Note that you still need to show any children of the dialog yourself.
During run, the default behavior of delete_event is disabled; if the dialog receives delete_event, it will not be destroyed as windows usually are, and run will return DELETE_EVENT. Also, during run the dialog will be modal. You can force run to return at any time by calling response to emit the response signal. Destroying the dialog during run is a very bad idea, because your post-run code won’t know whether the dialog was destroyed or not.
After run returns, you are responsible for hiding or destroying the dialog if you wish to do so.
Typical usage of this function might be:
GtkWidget *dialog = gtk_dialog_new ();
// Set up dialog...
int result = gtk_dialog_run (GTK_DIALOG (dialog));
// do_application_specific_something ();
// do_nothing_since_dialog_was_cancelled ();
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 run call.