[gtk+] dnd: Add more surface apis
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] dnd: Add more surface apis
- Date: Mon, 23 Oct 2017 12:17:13 +0000 (UTC)
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]