Package org.gnome.adw

Class Toast

java.lang.Object
All Implemented Interfaces:
Proxy

@Generated("io.github.jwharm.JavaGI") public final class Toast extends GObject
A helper object for ToastOverlay.

Toasts are meant to be passed into ToastOverlay.addToast(org.gnome.adw.Toast) as follows:

adw_toast_overlay_add_toast (overlay, adw_toast_new (_("Simple Toast")));
 

toast-simple

Toasts always have a close button. They emit the Toast::dismissed signal when disappearing.

Toast:timeout determines how long the toast stays on screen, while Toast:priority determines how it behaves if another toast is already being displayed.

Toast titles use Pango markup by default, set Toast:use-markup to FALSE if this is unwanted.

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 Action.

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);
 

toast-action

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:


 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);
 }
 

toast-undo