[gtk+] selection: Add texture getter/setter
- From: Benjamin Otte <otte src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] selection: Add texture getter/setter
- Date: Sat, 2 Dec 2017 15:22:41 +0000 (UTC)
commit 20de4c86ad1d89feb2c54793ea4f42000f015696
Author: Benjamin Otte <otte redhat com>
Date: Sat Dec 2 14:25:35 2017 +0100
selection: Add texture getter/setter
docs/reference/gtk/gtk4-sections.txt | 2 +
gtk/gtkselection.c | 64 ++++++++++++++++++++++++++++++++++
gtk/gtkselection.h | 5 +++
3 files changed, 71 insertions(+), 0 deletions(-)
---
diff --git a/docs/reference/gtk/gtk4-sections.txt b/docs/reference/gtk/gtk4-sections.txt
index 4a73241..fb52430 100644
--- a/docs/reference/gtk/gtk4-sections.txt
+++ b/docs/reference/gtk/gtk4-sections.txt
@@ -5207,6 +5207,8 @@ gtk_selection_data_set_pixbuf
gtk_selection_data_get_pixbuf
gtk_selection_data_set_surface
gtk_selection_data_get_surface
+gtk_selection_data_set_texture
+gtk_selection_data_get_texture
gtk_selection_data_set_uris
gtk_selection_data_get_uris
gtk_selection_data_get_targets
diff --git a/gtk/gtkselection.c b/gtk/gtkselection.c
index b848485..f90f5ef 100644
--- a/gtk/gtkselection.c
+++ b/gtk/gtkselection.c
@@ -90,6 +90,7 @@
#include "gdk-pixbuf/gdk-pixbuf.h"
#include "gdk/gdkcontentformatsprivate.h"
+#include "gdk/gdktextureprivate.h"
#ifdef GDK_WINDOWING_X11
#include "x11/gdkx.h"
@@ -1556,6 +1557,69 @@ gtk_selection_data_get_pixbuf (const GtkSelectionData *selection_data)
}
/**
+ * gtk_selection_data_set_texture:
+ * @selection_data: a #GtkSelectionData
+ * @texture: a #GdkTexture
+ *
+ * Sets the contents of the selection from a #GdkTexture.
+ * The surface is converted to the form determined by
+ * @selection_data->target.
+ *
+ * Returns: %TRUE if the selection was successfully set,
+ * otherwise %FALSE.
+ *
+ * Since: 3.94
+ **/
+gboolean
+gtk_selection_data_set_texture (GtkSelectionData *selection_data,
+ GdkTexture *texture)
+{
+ cairo_surface_t *surface;
+ gboolean retval;
+
+ g_return_val_if_fail (selection_data != NULL, FALSE);
+ g_return_val_if_fail (GDK_IS_TEXTURE (texture), FALSE);
+
+ surface = gdk_texture_download_surface (texture);
+ retval = gtk_selection_data_set_surface (selection_data, surface);
+ cairo_surface_destroy (surface);
+
+ return retval;
+}
+
+/**
+ * gtk_selection_data_get_texture:
+ * @selection_data: a #GtkSelectionData
+ *
+ * Gets the contents of the selection data as a #GdkPixbuf.
+ *
+ * Returns: (nullable) (transfer full): if the selection data
+ * contained a recognized image type and it could be converted to a
+ * #GdkTexture, a newly allocated texture is returned, otherwise
+ * %NULL. If the result is non-%NULL it must be freed with
+ * g_object_unref().
+ *
+ * Since: 3.94
+ **/
+GdkTexture *
+gtk_selection_data_get_texture (const GtkSelectionData *selection_data)
+{
+ GdkTexture *texture;
+ GdkPixbuf *pixbuf;
+
+ g_return_val_if_fail (selection_data != NULL, NULL);
+
+ pixbuf = gtk_selection_data_get_pixbuf (selection_data);
+ if (pixbuf == NULL)
+ return NULL;
+
+ texture = gdk_texture_new_for_pixbuf (pixbuf);
+ g_object_unref (pixbuf);
+
+ return texture;
+}
+
+/**
* gtk_selection_data_set_uris:
* @selection_data: a #GtkSelectionData
* @uris: (array zero-terminated=1): a %NULL-terminated array of
diff --git a/gtk/gtkselection.h b/gtk/gtkselection.h
index 3f0d69b..b386b0f 100644
--- a/gtk/gtkselection.h
+++ b/gtk/gtkselection.h
@@ -115,6 +115,11 @@ gboolean gtk_selection_data_set_surface (GtkSelectionData *selection_data,
cairo_surface_t *surface);
GDK_AVAILABLE_IN_ALL
GdkPixbuf *gtk_selection_data_get_pixbuf (const GtkSelectionData *selection_data);
+GDK_AVAILABLE_IN_3_94
+gboolean gtk_selection_data_set_texture (GtkSelectionData *selection_data,
+ GdkTexture *texture);
+GDK_AVAILABLE_IN_3_94
+GdkTexture *gtk_selection_data_get_texture (const GtkSelectionData *selection_data);
GDK_AVAILABLE_IN_ALL
gboolean gtk_selection_data_set_uris (GtkSelectionData *selection_data,
gchar **uris);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]