[gtk+] dnd: Add more surface apis



commit 493f5d6b1856229196ccc70362e35376bae085a6
Author: Matthias Clasen <mclasen redhat com>
Date:   Mon Oct 23 14:16:31 2017 +0200

    dnd: Add more surface apis
    
    The new function, gtk_drag_source_set_icon_surface, is for setting
    a drag source icon without using GdkPixbuf.

 docs/reference/gtk/gtk4-sections.txt |    1 +
 gtk/gtkdragsource.c                  |   26 ++++++++++++++++++++++++++
 gtk/gtkdragsource.h                  |    3 +++
 3 files changed, 30 insertions(+), 0 deletions(-)
---
diff --git a/docs/reference/gtk/gtk4-sections.txt b/docs/reference/gtk/gtk4-sections.txt
index e88cb0b..186dea7 100644
--- a/docs/reference/gtk/gtk4-sections.txt
+++ b/docs/reference/gtk/gtk4-sections.txt
@@ -5365,6 +5365,7 @@ gtk_drag_set_icon_default
 gtk_drag_check_threshold
 gtk_drag_source_set
 gtk_drag_source_set_icon_pixbuf
+gtk_drag_source_set_icon_surface
 gtk_drag_source_set_icon_name
 gtk_drag_source_set_icon_gicon
 gtk_drag_source_unset
diff --git a/gtk/gtkdragsource.c b/gtk/gtkdragsource.c
index e6bc185..4c701b4 100644
--- a/gtk/gtkdragsource.c
+++ b/gtk/gtkdragsource.c
@@ -374,6 +374,32 @@ gtk_drag_source_set_icon_pixbuf (GtkWidget *widget,
 }
 
 /**
+ * gtk_drag_source_set_icon_surface: (method)
+ * @widget: a #GtkWidget
+ * @surface: the cairo surface for the drag icon
+ * 
+ * Sets the icon that will be used for drags from a particular widget
+ * from a cairo surface. GTK+ retains a reference for @surface and will
+ * release it when it is no longer needed.
+ *
+ * Since: 3.94
+ */
+void
+gtk_drag_source_set_icon_surface (GtkWidget       *widget,
+                                  cairo_surface_t *surface)
+{
+  GtkDragSourceSite *site;
+
+  g_return_if_fail (GTK_IS_WIDGET (widget));
+
+  site = g_object_get_data (G_OBJECT (widget), "gtk-site-data");
+  g_return_if_fail (site != NULL);
+
+  g_clear_pointer (&site->image_def, gtk_image_definition_unref);
+  site->image_def = gtk_image_definition_new_surface (surface);
+}
+
+/**
  * gtk_drag_source_set_icon_name: (method)
  * @widget: a #GtkWidget
  * @icon_name: name of icon to use
diff --git a/gtk/gtkdragsource.h b/gtk/gtkdragsource.h
index 2e3e2c3..cca2a97 100644
--- a/gtk/gtkdragsource.h
+++ b/gtk/gtkdragsource.h
@@ -62,6 +62,9 @@ void           gtk_drag_source_add_uri_targets   (GtkWidget    *widget);
 GDK_AVAILABLE_IN_ALL
 void gtk_drag_source_set_icon_pixbuf  (GtkWidget       *widget,
                                       GdkPixbuf       *pixbuf);
+GDK_AVAILABLE_IN_3_94
+void gtk_drag_source_set_icon_surface (GtkWidget       *widget,
+                                       cairo_surface_t *surface);
 GDK_AVAILABLE_IN_ALL
 void gtk_drag_source_set_icon_name    (GtkWidget       *widget,
                                       const gchar     *icon_name);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]