### Class

# Adw AlertDialog

since: 1.5

#### Description [src]

    class Adw.AlertDialog : Adw.Dialog
      implements Gtk.Accessible, Gtk.Buildable, Gtk.ConstraintTarget {
      /* No available fields */
    }

A dialog presenting a message or a question.

Alert dialogs have a heading, a body, an optional child widget, and one or multiple responses, each presented as a button.

Each response has a unique string ID, and a button label. Additionally, each response can be enabled or disabled, and can have a suggested or destructive appearance.

When one of the responses is activated, or the dialog is closed, the `AdwAlertDialog::response` signal will be emitted. This signal is detailed, and the detail, as well as the `response` parameter will be set to the ID of the activated response, or to the value of the `AdwAlertDialog:close-response` property if the dialog had been closed without activating any of the responses.

Response buttons can be presented horizontally or vertically depending on available space.

When a response is activated, `AdwAlertDialog` is closed automatically.

An example of using an alert dialog:

    AdwDialog *dialog;

    dialog = adw_alert_dialog_new (_("Replace File?"), NULL);

    adw_alert_dialog_format_body (ADW_ALERT_DIALOG (dialog),
                                  _("A file named “%s” already exists. Do you want to replace it?"),
                                  filename);

    adw_alert_dialog_add_responses (ADW_ALERT_DIALOG (dialog),
                                    "cancel",  _("_Cancel"),
                                    "replace", _("_Replace"),
                                    NULL);

    adw_alert_dialog_set_response_appearance (ADW_ALERT_DIALOG (dialog),
                                              "replace",
                                              ADW_RESPONSE_DESTRUCTIVE);

    adw_alert_dialog_set_default_response (ADW_ALERT_DIALOG (dialog), "cancel");
    adw_alert_dialog_set_close_response (ADW_ALERT_DIALOG (dialog), "cancel");

    g_signal_connect (dialog, "response", G_CALLBACK (response_cb), self);

    adw_dialog_present (dialog, parent);

## Async API

`AdwAlertDialog` can also be used via the `adw_alert_dialog_choose()` method. This API follows the GIO async pattern, and the result can be obtained by calling `adw_alert_dialog_choose_finish()`, for example:

    static void
    dialog_cb (AdwAlertDialog *dialog,
               GAsyncResult   *result,
               MyWindow       *self)
    {
      const char *response = adw_alert_dialog_choose_finish (dialog, result);

      // ...
    }

    static void
    show_dialog (MyWindow *self)
    {
      AdwDialog *dialog;

      dialog = adw_alert_dialog_new (_("Replace File?"), NULL);

      adw_alert_dialog_format_body (ADW_ALERT_DIALOG (dialog),
                                    _("A file named “%s” already exists. Do you want to replace it?"),
                                    filename);

      adw_alert_dialog_add_responses (ADW_ALERT_DIALOG (dialog),
                                      "cancel",  _("_Cancel"),
                                      "replace", _("_Replace"),
                                      NULL);

      adw_alert_dialog_set_response_appearance (ADW_ALERT_DIALOG (dialog),
                                                "replace",
                                                ADW_RESPONSE_DESTRUCTIVE);

      adw_alert_dialog_set_default_response (ADW_ALERT_DIALOG (dialog), "cancel");
      adw_alert_dialog_set_close_response (ADW_ALERT_DIALOG (dialog), "cancel");

      adw_alert_dialog_choose (ADW_ALERT_DIALOG (dialog), GTK_WIDGET (self),
                               NULL, (GAsyncReadyCallback) dialog_cb, self);
    }

## AdwAlertDialog as GtkBuildable

`AdwAlertDialog` supports adding responses in UI definitions by via the `<responses>` element that may contain multiple `<response>` elements, each respresenting a response.

Each of the `<response>` elements must have the `id` attribute specifying the response ID. The contents of the element are used as the response label.

Response labels can be translated with the usual `translatable`, `context` and `comments` attributes.

The `<response>` elements can also have `enabled` and/or `appearance` attributes. See `adw_alert_dialog_set_response_enabled()` and `adw_alert_dialog_set_response_appearance()` for details.

Example of an `AdwAlertDialog` UI definition:

    <object class="AdwAlertDialog" id="dialog">
      <property name="heading" translatable="yes">Save Changes?</property>
      <property name="body" translatable="yes">Open documents contain unsaved changes. Changes which are not saved will be permanently lost.</property>
      <property name="default-response">save</property>
      <property name="close-response">cancel</property>
      <signal name="response" handler="response_cb"/>
      <responses>
        <response id="cancel" translatable="yes">_Cancel</response>
        <response id="discard" translatable="yes" appearance="destructive">_Discard</response>
        <response id="save" translatable="yes" appearance="suggested" enabled="false">_Save</response>
      </responses>
    </object>

Available since: 1.5

#### Ancestors

- AdwDialog
- GtkWidget
- GInitiallyUnowned
- GObject

#### Implements

- GtkAccessible
- GtkBuildable
- GtkConstraintTarget

#### Constructors

###### adw_alert_dialog_new

Creates a new `AdwAlertDialog`.

since: 1.5

#### Instance methods

###### adw_alert_dialog_add_response

Adds a response with `id` and `label` to `self`.

since: 1.5

###### adw_alert_dialog_add_responses

Adds multiple responses to `self`.

since: 1.5

###### adw_alert_dialog_choose

This function shows `self` to the user.

since: 1.5

###### adw_alert_dialog_choose_finish

Finishes the `adw_alert_dialog_choose()` call and returns the response ID.

since: 1.5

###### adw_alert_dialog_format_body

Sets the formatted body text of `self`.

since: 1.5

###### adw_alert_dialog_format_body_markup

Sets the formatted body text of `self` with Pango markup.

since: 1.5

###### adw_alert_dialog_format_heading

Sets the formatted heading of `self`.

since: 1.5

###### adw_alert_dialog_format_heading_markup

Sets the formatted heading of `self` with Pango markup.

since: 1.5

###### adw_alert_dialog_get_body

Gets the body text of `self`.

since: 1.5

###### adw_alert_dialog_get_body_use_markup

Gets whether the body text of `self` includes Pango markup.

since: 1.5

###### adw_alert_dialog_get_close_response

Gets the ID of the close response of `self`.

since: 1.5

###### adw_alert_dialog_get_default_response

Gets the ID of the default response of `self`.

since: 1.5

###### adw_alert_dialog_get_extra_child

Gets the child widget of `self`.

since: 1.5

###### adw_alert_dialog_get_heading

Gets the heading of `self`.

since: 1.5

###### adw_alert_dialog_get_heading_use_markup

Gets whether the heading of `self` includes Pango markup.

since: 1.5

###### adw_alert_dialog_get_response_appearance

Gets the appearance of `response`.

since: 1.5

###### adw_alert_dialog_get_response_enabled

Gets whether `response` is enabled.

since: 1.5

###### adw_alert_dialog_get_response_label

Gets the label of `response`.

since: 1.5

###### adw_alert_dialog_has_response

Gets whether `self` has a response with the ID `response`.

since: 1.5

###### adw_alert_dialog_remove_response

Removes a response from `self`.

since: 1.5

###### adw_alert_dialog_set_body

Sets the body text of `self`.

since: 1.5

###### adw_alert_dialog_set_body_use_markup

Sets whether the body text of `self` includes Pango markup.

since: 1.5

###### adw_alert_dialog_set_close_response

Sets the ID of the close response of `self`.

since: 1.5

###### adw_alert_dialog_set_default_response

Sets the ID of the default response of `self`.

since: 1.5

###### adw_alert_dialog_set_extra_child

Sets the child widget of `self`.

since: 1.5

###### adw_alert_dialog_set_heading

Sets the heading of `self`.

since: 1.5

###### adw_alert_dialog_set_heading_use_markup

Sets whether the heading of `self` includes Pango markup.

since: 1.5

###### adw_alert_dialog_set_response_appearance

Sets the appearance for `response`.

since: 1.5

###### adw_alert_dialog_set_response_enabled

Sets whether `response` is enabled.

since: 1.5

###### adw_alert_dialog_set_response_label

Sets the label of `response` to `label`.

since: 1.5

##### Methods inherited from AdwDialog (23)

###### adw_dialog_add_breakpoint

Adds `breakpoint` to `self`.

since: 1.5

###### adw_dialog_close

Attempts to close `self`.

since: 1.5

###### adw_dialog_force_close

Closes `self`.

since: 1.5

###### adw_dialog_get_can_close

Gets whether `self` can be closed.

since: 1.5

###### adw_dialog_get_child

Gets the child widget of `self`.

since: 1.5

###### adw_dialog_get_content_height

Gets the height of the dialog’s contents.

since: 1.5

###### adw_dialog_get_content_width

Gets the width of the dialog’s contents.

since: 1.5

###### adw_dialog_get_current_breakpoint

Gets the current breakpoint.

since: 1.5

###### adw_dialog_get_default_widget

Gets the default widget for `self`.

since: 1.5

###### adw_dialog_get_focus

Gets the focus widget for `self`.

since: 1.5

###### adw_dialog_get_follows_content_size

Gets whether to size content of `self` automatically.

since: 1.5

###### adw_dialog_get_presentation_mode

Gets presentation mode for `self`.

since: 1.5

###### adw_dialog_get_title

Gets the title of `self`.

since: 1.5

###### adw_dialog_present

Presents `self` within `parent`‘s window.

since: 1.5

###### adw_dialog_set_can_close

Sets whether `self` can be closed.

since: 1.5

###### adw_dialog_set_child

Sets the child widget of `self`.

since: 1.5

###### adw_dialog_set_content_height

Sets the height of the dialog’s contents.

since: 1.5

###### adw_dialog_set_content_width

Sets the width of the dialog’s contents.

since: 1.5

###### adw_dialog_set_default_widget

Sets the default widget for `self`.

since: 1.5

###### adw_dialog_set_focus

Sets the focus widget for `self`.

since: 1.5

###### adw_dialog_set_follows_content_size

Sets whether to size content of `self` automatically.

since: 1.5

###### adw_dialog_set_presentation_mode

Sets presentation mode for `self`.

since: 1.5

###### adw_dialog_set_title

Sets the title of `self`.

since: 1.5

##### Methods inherited from GtkWidget (162)

Please see GtkWidget for a full list of methods.

##### Methods inherited from GObject (43)

Please see GObject for a full list of methods.

##### Methods inherited from GtkAccessible (19)

###### gtk_accessible_announce

Requests the user’s screen reader to announce the given message.

###### gtk_accessible_get_accessible_parent

Retrieves the accessible parent for an accessible object.

###### gtk_accessible_get_accessible_role

Retrieves the accessible role of an accessible object.

###### gtk_accessible_get_at_context

Retrieves the accessible implementation for the given `GtkAccessible`.

###### gtk_accessible_get_bounds

Queries the coordinates and dimensions of this accessible.

###### gtk_accessible_get_first_accessible_child

Retrieves the first accessible child of an accessible object.

###### gtk_accessible_get_next_accessible_sibling

Retrieves the next accessible sibling of an accessible object.

###### gtk_accessible_get_platform_state

Query a platform state, such as focus.

###### gtk_accessible_reset_property

Resets the accessible `property` to its default value.

###### gtk_accessible_reset_relation

Resets the accessible `relation` to its default value.

###### gtk_accessible_reset_state

Resets the accessible `state` to its default value.

###### gtk_accessible_set_accessible_parent

Sets the parent and sibling of an accessible object.

###### gtk_accessible_update_next_accessible_sibling

Updates the next accessible sibling of `self`.

###### gtk_accessible_update_property

Updates a list of accessible properties.

###### gtk_accessible_update_property_value

Updates an array of accessible properties.

###### gtk_accessible_update_relation

Updates a list of accessible relations.

###### gtk_accessible_update_relation_value

Updates an array of accessible relations.

###### gtk_accessible_update_state

Updates a list of accessible states. See the `GtkAccessibleState` documentation for the value types of accessible states.

###### gtk_accessible_update_state_value

Updates an array of accessible states.

##### Methods inherited from GtkBuildable (1)

###### gtk_buildable_get_buildable_id

Gets the ID of the `buildable` object.

#### Properties

###### Adw.AlertDialog:body

The body text of the dialog.

since: 1.5

###### Adw.AlertDialog:body-use-markup

Whether the body text includes Pango markup.

since: 1.5

###### Adw.AlertDialog:close-response

The ID of the close response.

since: 1.5

###### Adw.AlertDialog:default-response

The response ID of the default response.

since: 1.5

###### Adw.AlertDialog:extra-child

The child widget.

since: 1.5

###### Adw.AlertDialog:heading

The heading of the dialog.

since: 1.5

###### Adw.AlertDialog:heading-use-markup

Whether the heading includes Pango markup.

since: 1.5

##### Properties inherited from AdwDialog (10)

###### Adw.Dialog:can-close

Whether the dialog can be closed.

since: 1.5

###### Adw.Dialog:child

The child widget of the `AdwDialog`.

since: 1.5

###### Adw.Dialog:content-height

The height of the dialog’s contents.

since: 1.5

###### Adw.Dialog:content-width

The width of the dialog’s contents.

since: 1.5

###### Adw.Dialog:current-breakpoint

The current breakpoint.

since: 1.5

###### Adw.Dialog:default-widget

The default widget.

since: 1.5

###### Adw.Dialog:focus-widget

The focus widget.

since: 1.5

###### Adw.Dialog:follows-content-size

Whether to size content automatically.

since: 1.5

###### Adw.Dialog:presentation-mode

The dialog’s presentation mode.

since: 1.5

###### Adw.Dialog:title

The title of the dialog.

since: 1.5

##### Properties inherited from GtkWidget (34)

###### Gtk.Widget:can-focus

Whether the widget or any of its descendents can accept the input focus.

###### Gtk.Widget:can-target

Whether the widget can receive pointer events.

###### Gtk.Widget:css-classes

A list of css classes applied to this widget.

###### Gtk.Widget:css-name

The name of this widget in the CSS tree.

###### Gtk.Widget:cursor

The cursor used by `widget`.

###### Gtk.Widget:focus-on-click

Whether the widget should grab focus when it is clicked with the mouse.

###### Gtk.Widget:focusable

Whether this widget itself will accept the input focus.

###### Gtk.Widget:halign

How to distribute horizontal space if widget gets extra space.

###### Gtk.Widget:has-default

Whether the widget is the default widget.

###### Gtk.Widget:has-focus

Whether the widget has the input focus.

###### Gtk.Widget:has-tooltip

Enables or disables the emission of the ::query-tooltip signal on `widget`.

###### Gtk.Widget:height-request

Override for height request of the widget.

###### Gtk.Widget:hexpand

Whether to expand horizontally.

###### Gtk.Widget:hexpand-set

Whether to use the `hexpand` property.

###### Gtk.Widget:layout-manager

The `GtkLayoutManager` instance to use to compute the preferred size of the widget, and allocate its children.

###### Gtk.Widget:margin-bottom

Margin on bottom side of widget.

###### Gtk.Widget:margin-end

Margin on end of widget, horizontally.

###### Gtk.Widget:margin-start

Margin on start of widget, horizontally.

###### Gtk.Widget:margin-top

Margin on top side of widget.

###### Gtk.Widget:name

The name of the widget.

###### Gtk.Widget:opacity

The requested opacity of the widget.

###### Gtk.Widget:overflow

How content outside the widget’s content area is treated.

###### Gtk.Widget:parent

The parent widget of this widget.

###### Gtk.Widget:receives-default

Whether the widget will receive the default action when it is focused.

###### Gtk.Widget:root

The `GtkRoot` widget of the widget tree containing this widget.

###### Gtk.Widget:scale-factor

The scale factor of the widget.

###### Gtk.Widget:sensitive

Whether the widget responds to input.

###### Gtk.Widget:tooltip-markup

Sets the text of tooltip to be the given string, which is marked up with Pango markup.

###### Gtk.Widget:tooltip-text

Sets the text of tooltip to be the given string.

###### Gtk.Widget:valign

How to distribute vertical space if widget gets extra space.

###### Gtk.Widget:vexpand

Whether to expand vertically.

###### Gtk.Widget:vexpand-set

Whether to use the `vexpand` property.

###### Gtk.Widget:visible

Whether the widget is visible.

###### Gtk.Widget:width-request

Override for width request of the widget.

##### Properties inherited from GtkAccessible (1)

###### Gtk.Accessible:accessible-role

The accessible role of the given `GtkAccessible` implementation.

#### Signals

###### Adw.AlertDialog::response

This signal is emitted when the dialog is closed.

since: 1.5

##### Signals inherited from AdwDialog (2)

###### AdwDialog::close-attempt

Emitted when the close button or shortcut is used, or `adw_dialog_close()` is called while `AdwDialog:can-close` is set to `FALSE`.

since: 1.5

###### AdwDialog::closed

Emitted when the dialog is successfully closed.

since: 1.5

##### Signals inherited from GtkWidget (13)

###### GtkWidget::destroy

Signals that all holders of a reference to the widget should release the reference that they hold.

###### GtkWidget::direction-changed

Emitted when the text direction of a widget changes.

###### GtkWidget::hide

Emitted when `widget` is hidden.

###### GtkWidget::keynav-failed

Emitted if keyboard navigation fails.

###### GtkWidget::map

Emitted when `widget` is going to be mapped.

###### GtkWidget::mnemonic-activate

Emitted when a widget is activated via a mnemonic.

###### GtkWidget::move-focus

Emitted when the focus is moved.

###### GtkWidget::query-tooltip

Emitted when the widget’s tooltip is about to be shown.

###### GtkWidget::realize

Emitted when `widget` is associated with a `GdkSurface`.

###### GtkWidget::show

Emitted when `widget` is shown.

###### GtkWidget::state-flags-changed

Emitted when the widget state changes.

###### GtkWidget::unmap

Emitted when `widget` is going to be unmapped.

###### GtkWidget::unrealize

Emitted when the `GdkSurface` associated with `widget` is destroyed.

##### Signals inherited from GObject (1)

###### GObject::notify

The notify signal is emitted on an object when one of its properties has its value set through g_object_set_property(), g_object_set(), et al.

#### Class structure

    struct AdwAlertDialogClass {
      AdwDialogClass parent_class;
      void (* response) (
        AdwAlertDialog* self,
        const char* response
      );

    }

No description available.

###### Class members

`parent_class: AdwDialogClass`

  No description available.

`response: void (* response) ( AdwAlertDialog* self, const char* response )`

  No description available.

#### Virtual methods

###### Adw.AlertDialogClass.response

No description available.