diff --git a/gtk/gtkclipboard.c b/gtk/gtkclipboard.c
index e0b736f..d610d55 100644
--- a/gtk/gtkclipboard.c
+++ b/gtk/gtkclipboard.c
@@ -1816,6 +1816,34 @@ gtk_clipboard_wait_is_uris_available (GtkClipboard *clipboard)
 }
 
 /**
+ * gtk_clipboard_wait_for_target_names:
+ * @clipboard: a #GtkClipboard
+ *
+ * List of target names that are present on the clipboard.
+ * This function waits for the data to be received using the main
+ * loop, so events, timeouts, etc, may be dispatched during the wait.
+ *
+ * Return value: (element-type utf8) (transfer container):
+ *
+ * Since: 3.0
+ */
+GSList *
+gtk_clipboard_wait_for_targets_names (GtkClipboard  *clipboard)
+{
+    GdkAtom  *targets;
+    gint n_targets;
+    gint  i;
+    GSList *list = NULL;
+
+    gtk_clipboard_wait_for_targets (clipboard, &targets, &n_targets);
+    for (i = 0; i < n_targets; i++) {
+            list = g_slist_append (list, gdk_atom_name(targets[i]));
+    }
+
+    return list;
+}
+
+/**
  * gtk_clipboard_wait_for_targets:
  * @clipboard: a #GtkClipboard
  * @targets: (out) (array length=n_targets) (transfer container): location
diff --git a/gtk/gtkclipboard.h b/gtk/gtkclipboard.h
index d47dba1..a4bb205 100644
--- a/gtk/gtkclipboard.h
+++ b/gtk/gtkclipboard.h
@@ -208,6 +208,7 @@ guint8 *          gtk_clipboard_wait_for_rich_text (GtkClipboard  *clipboard,
                                                     gsize         *length);
 GdkPixbuf *       gtk_clipboard_wait_for_image     (GtkClipboard  *clipboard);
 gchar **          gtk_clipboard_wait_for_uris      (GtkClipboard  *clipboard);
+GSList *          gtk_clipboard_wait_for_targets_names (GtkClipboard  *clipboard);
 gboolean          gtk_clipboard_wait_for_targets   (GtkClipboard  *clipboard,
                                                     GdkAtom      **targets,
                                                     gint          *n_targets);
