[gtk+] Revert "clipboard: Add gdk_clipboard_set()"
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] Revert "clipboard: Add gdk_clipboard_set()"
- Date: Tue, 5 Dec 2017 07:14:20 +0000 (UTC)
commit b5c62cf86fe37e05ce2a0ae050df2a229457676b
Author: Matthias Clasen <mclasen redhat com>
Date: Mon Dec 4 23:09:54 2017 -0800
Revert "clipboard: Add gdk_clipboard_set()"
This reverts commit dc50e0637ffa8bc7a369d00a5d8e7656d03c3781.
This broke the build.
docs/reference/gdk/gdk4-sections.txt | 3 -
gdk/gdkclipboard.c | 105 +++++++++++++++++++++++++++-------
gdk/gdkclipboard.h | 11 ++++
gtk/gtkfilechooserwidget.c | 13 ++++-
gtk/gtktextbuffer.c | 13 ++++-
5 files changed, 118 insertions(+), 27 deletions(-)
---
diff --git a/docs/reference/gdk/gdk4-sections.txt b/docs/reference/gdk/gdk4-sections.txt
index acb8d2a..dccf648 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 2832fca..befbb08 100644
--- a/gdk/gdkclipboard.c
+++ b/gdk/gdkclipboard.c
@@ -30,6 +30,8 @@
#include "gdkpipeiostreamprivate.h"
#include "gdktexture.h"
+#include <gobject/gvaluecollector.h>
+
/**
* SECTION:gdkclipboard
* @Short_description: Share data between applications for Copy-and-Paste
@@ -1233,32 +1235,104 @@ gdk_clipboard_set_content (GdkClipboard *clipboard,
}
/**
- * gdk_clipboard_set_text:
+ * gdk_clipboard_set:
* @clipboard: a #GdkClipboard
- * @text: Text to put into the clipboard
+ * @type: type of value to set
+ * @...: value contents conforming to @type
*
- * Puts the given @text into the clipboard.
+ * Sets the clipboard to contain the value collected from the given
+ * varargs.
**/
void
-gdk_clipboard_set_text (GdkClipboard *clipboard,
- const char *text)
+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)
{
- GdkContentProvider *provider;
GValue value = G_VALUE_INIT;
+ char *error;
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_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_texture:
+ * gdk_clipboard_set_text: (skip)
+ * @clipboard: a #GdkClipboard
+ * @text: Text to put into the clipboard
+ *
+ * Puts the given @text into the clipboard.
+ **/
+void
+gdk_clipboard_set_text (GdkClipboard *clipboard,
+ const char *text)
+{
+ g_return_if_fail (GDK_IS_CLIPBOARD (clipboard));
+
+ gdk_clipboard_set (clipboard, G_TYPE_STRING, text);
+}
+
+/**
+ * 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 02b13b0..4f338b3 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 dd75977..1d99534 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 1dba4c4..b7d1805 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)
{
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]