From b5c62cf86fe37e05ce2a0ae050df2a229457676b Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Mon, 4 Dec 2017 23:09:54 -0800 Subject: [PATCH] Revert "clipboard: Add gdk_clipboard_set()" This reverts commit dc50e0637ffa8bc7a369d00a5d8e7656d03c3781. This broke the build. --- docs/reference/gdk/gdk4-sections.txt | 3 - gdk/gdkclipboard.c | 109 +++++++++++++++++++++------ gdk/gdkclipboard.h | 11 +++ gtk/gtkfilechooserwidget.c | 13 +++- gtk/gtktextbuffer.c | 13 +++- 5 files changed, 120 insertions(+), 29 deletions(-) diff --git a/docs/reference/gdk/gdk4-sections.txt b/docs/reference/gdk/gdk4-sections.txt index acb8d2abb8..dccf648e35 100644 --- a/docs/reference/gdk/gdk4-sections.txt +++ b/docs/reference/gdk/gdk4-sections.txt @@ -1304,9 +1304,6 @@ gdk_clipboard_read_texture_finish gdk_clipboard_read_text_async gdk_clipboard_read_text_finish gdk_clipboard_set_content -gdk_clipboard_set -gdk_clipboard_set_valist -gdk_clipboard_set_value gdk_clipboard_set_text gdk_clipboard_set_texture diff --git a/gdk/gdkclipboard.c b/gdk/gdkclipboard.c index 2832fcad50..befbb08aef 100644 --- a/gdk/gdkclipboard.c +++ b/gdk/gdkclipboard.c @@ -30,6 +30,8 @@ #include "gdkpipeiostreamprivate.h" #include "gdktexture.h" +#include + /** * SECTION:gdkclipboard * @Short_description: Share data between applications for Copy-and-Paste @@ -1233,7 +1235,88 @@ gdk_clipboard_set_content (GdkClipboard *clipboard, } /** - * gdk_clipboard_set_text: + * gdk_clipboard_set: + * @clipboard: a #GdkClipboard + * @type: type of value to set + * @...: value contents conforming to @type + * + * Sets the clipboard to contain the value collected from the given + * varargs. + **/ +void +gdk_clipboard_set (GdkClipboard *clipboard, + GType type, + ...) +{ + va_list args; + + g_return_if_fail (GDK_IS_CLIPBOARD (clipboard)); + + va_start (args, type); + gdk_clipboard_set_valist (clipboard, type, args); + va_end (args); +} + +/** + * gdk_clipboard_set_valist: (skip) + * @clipboard: a #GdkClipboard + * @type: type of value to set + * @args: varargs containing the value of @type + * + * Sets the clipboard to contain the value collected from the given + * @args. + **/ +void +gdk_clipboard_set_valist (GdkClipboard *clipboard, + GType type, + va_list args) +{ + GValue value = G_VALUE_INIT; + char *error; + + g_return_if_fail (GDK_IS_CLIPBOARD (clipboard)); + + G_VALUE_COLLECT_INIT (&value, type, + args, G_VALUE_NOCOPY_CONTENTS, + &error); + if (error) + { + g_warning ("%s: %s", G_STRLOC, error); + g_free (error); + /* we purposely leak the value here, it might not be + * in a sane state if an error condition occoured + */ + return; + } + + gdk_clipboard_set_value (clipboard, &value); + g_value_unset (&value); +} + +/** + * gdk_clipboard_set_value: (rename-to gdk_clipboard_set) + * @clipboard: a #GdkClipboard + * @value: a #GValue to set + * + * Sets the @clipboard to contain the given @value. + **/ +void +gdk_clipboard_set_value (GdkClipboard *clipboard, + const GValue *value) +{ + GdkContentProvider *provider; + + g_return_if_fail (GDK_IS_CLIPBOARD (clipboard)); + g_return_if_fail (G_IS_VALUE (value)); + + provider = gdk_content_provider_new_for_value (value); + + gdk_clipboard_set_content (clipboard, provider); + g_object_unref (provider); +} + +/** + * gdk_clipboard_set_text: (skip) * @clipboard: a #GdkClipboard * @text: Text to put into the clipboard * @@ -1243,22 +1326,13 @@ void gdk_clipboard_set_text (GdkClipboard *clipboard, const char *text) { - GdkContentProvider *provider; - GValue value = G_VALUE_INIT; - g_return_if_fail (GDK_IS_CLIPBOARD (clipboard)); - g_value_init (&value, G_TYPE_STRING); - g_value_set_string (&value, text); - provider = gdk_content_provider_new_for_value (&value); - g_value_unset (&value); - - gdk_clipboard_set_content (clipboard, provider); - g_object_unref (provider); + gdk_clipboard_set (clipboard, G_TYPE_STRING, text); } /** - * gdk_clipboard_set_texture: + * gdk_clipboard_set_texture: (skip) * @clipboard: a #GdkClipboard * @texture: a #GdkTexture to put into the clipboard * @@ -1268,18 +1342,9 @@ void gdk_clipboard_set_texture (GdkClipboard *clipboard, GdkTexture *texture) { - GdkContentProvider *provider; - GValue value = G_VALUE_INIT; - g_return_if_fail (GDK_IS_CLIPBOARD (clipboard)); g_return_if_fail (GDK_IS_TEXTURE (texture)); - g_value_init (&value, GDK_TYPE_TEXTURE); - g_value_set_object (&value, texture); - provider = gdk_content_provider_new_for_value (&value); - g_value_unset (&value); - - gdk_clipboard_set_content (clipboard, provider); - g_object_unref (provider); + gdk_clipboard_set (clipboard, GDK_TYPE_TEXTURE, texture); } diff --git a/gdk/gdkclipboard.h b/gdk/gdkclipboard.h index 02b13b01c8..4f338b323b 100644 --- a/gdk/gdkclipboard.h +++ b/gdk/gdkclipboard.h @@ -103,6 +103,17 @@ GDK_AVAILABLE_IN_3_94 gboolean gdk_clipboard_set_content (GdkClipboard *clipboard, GdkContentProvider *provider); GDK_AVAILABLE_IN_3_94 +void gdk_clipboard_set (GdkClipboard *clipboard, + GType type, + ...); +GDK_AVAILABLE_IN_3_94 +void gdk_clipboard_set_valist (GdkClipboard *clipboard, + GType type, + va_list args); +GDK_AVAILABLE_IN_3_94 +void gdk_clipboard_set_value (GdkClipboard *clipboard, + const GValue *value); +GDK_AVAILABLE_IN_3_94 void gdk_clipboard_set_text (GdkClipboard *clipboard, const char *text); GDK_AVAILABLE_IN_3_94 diff --git a/gtk/gtkfilechooserwidget.c b/gtk/gtkfilechooserwidget.c index dd75977c96..1d99534d35 100644 --- a/gtk/gtkfilechooserwidget.c +++ b/gtk/gtkfilechooserwidget.c @@ -1668,10 +1668,19 @@ copy_file_location_cb (GSimpleAction *action, if (selected_files) { GdkClipboard *clipboard; + GdkContentProvider *provider; + GValue value = G_VALUE_INIT; clipboard = gtk_widget_get_clipboard (GTK_WIDGET (impl)); - gdk_clipboard_set (clipboard, GDK_TYPE_FILE_LIST, selected_files); - g_slist_free_full (selected_files, g_object_unref); + + g_value_init (&value, GDK_TYPE_FILE_LIST); + g_value_take_boxed (&value, selected_files); + + provider = gdk_content_provider_new_for_value (&value); + g_value_unset (&value); + + gdk_clipboard_set_content (clipboard, provider); + g_object_unref (provider); } } diff --git a/gtk/gtktextbuffer.c b/gtk/gtktextbuffer.c index 1dba4c4e00..b7d18056a9 100644 --- a/gtk/gtktextbuffer.c +++ b/gtk/gtktextbuffer.c @@ -3927,10 +3927,19 @@ cut_or_copy (GtkTextBuffer *buffer, if (!gtk_text_iter_equal (&start, &end)) { GtkTextBuffer *contents; + GdkContentProvider *provider; + GValue value = G_VALUE_INIT; contents = create_clipboard_contents_buffer (buffer, &start, &end); - gdk_clipboard_set (clipboard, GTK_TYPE_TEXT_BUFFER, contents); - g_object_unref (contents); + + g_value_init (&value, GTK_TYPE_TEXT_BUFFER); + g_value_take_object (&value, contents); + + provider = gdk_content_provider_new_for_value (&value); + g_value_unset (&value); + + gdk_clipboard_set_content (clipboard, provider); + g_object_unref (provider); if (delete_region_after) {