diff options
-rw-r--r-- | docs/reference/gtk/gtk4-sections.txt | 1 | ||||
-rw-r--r-- | gtk/gtkdragsource.c | 26 | ||||
-rw-r--r-- | 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 e88cb0b6dc..186dea70bd 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 e6bc185797..4c701b4599 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 2e3e2c39fb..cca2a9784c 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); |