A helper object for [class@ToastOverlay].
Toasts are meant to be passed into [[email protected]_toast] as follows:
```c adw_toast_overlay_add_toast (overlay, adw_toast_new (_("Simple Toast"))); ```
<picture> <source srcset="toast-simple-dark.png" media="(prefers-color-scheme: dark)"> <img src="toast-simple.png"
alt="toast-simple"> </picture>
Toasts always have a close button. They emit the [signal@Toast:AdwToast:dismissed
] signal when disappearing.
[property@Toast:timeout] determines how long the toast stays on screen, while [property@Toast:priority] determines how it behaves if
another toast is already being displayed.
[property@Toast:custom-title] can be used to replace the title label with a custom widget.
Actions
Toasts can have one button on them, with a label and an attached [[email protected]].
```c AdwToast *toast = adw_toast_new (_("Toast with Action"));
adw_toast_set_button_label (toast, _("_Example")); adw_toast_set_action_name (toast, "win.example");
adw_toast_overlay_add_toast (overlay, toast); ```
<picture> <source srcset="toast-action-dark.png" media="(prefers-color-scheme: dark)"> <img src="toast-action.png"
alt="toast-action"> </picture>
Modifying toasts
Toasts can be modified after they have been shown. For this, an `AdwToast` reference must be kept around while the toast is visible.
A common use case for this is using toasts as undo prompts that stack with each other, allowing to batch undo the last deleted items:
```c
static void toast_undo_cb (GtkWidget *sender, const char *action, GVariant *param) { // Undo the deletion }
static void dismissed_cb (MyWindow *self) { self->undo_toast = NULL;
// Permanently delete the items }
static void delete_item (MyWindow *self, MyItem *item) { g_autofree char *title = NULL; int n_items;
// Mark the item as waiting for deletion n_items = ... // The number of waiting items
if (!self->undo_toast) { self->undo_toast = adw_toast_new_format (_("‘s’ deleted"), ...);
adw_toast_set_priority (self->undo_toast, ADW_TOAST_PRIORITY_HIGH); adw_toast_set_button_label (self->undo_toast, _("_Undo"));
adw_toast_set_action_name (self->undo_toast, "toast.undo");
g_signal_connect_swapped (self->undo_toast, "dismissed", G_CALLBACK (dismissed_cb), self);
adw_toast_overlay_add_toast (self->toast_overlay, self->undo_toast);
return; }
title = g_strdup_printf (ngettext ("<span font_features='tnum=1'>d</span> item deleted",
"<span font_features='tnum=1'>d</span> items deleted", n_items), n_items);
adw_toast_set_title (self->undo_toast, title);
// Bump the toast timeout adw_toast_overlay_add_toast (self->toast_overlay, g_object_ref (self->undo_toast)); }
static void my_window_class_init (MyWindowClass *klass) { GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
gtk_widget_class_install_action (widget_class, "toast.undo", NULL, toast_undo_cb); } ```
<picture> <source srcset="toast-undo-dark.png" media="(prefers-color-scheme: dark)"> <img src="toast-undo.png"
alt="toast-undo"> </picture>