[gtk+] dnd: Use surface for dnd icon instead of pixbuf
- From: Benjamin Otte <otte src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] dnd: Use surface for dnd icon instead of pixbuf
- Date: Tue, 1 Dec 2015 23:30:45 +0000 (UTC)
commit 3bacffd0635572005703b1f9f4df7dfd83cbcb67
Author: Benjamin Otte <otte redhat com>
Date: Sun Nov 29 03:23:59 2015 +0100
dnd: Use surface for dnd icon instead of pixbuf
gtk/gtkdnd.c | 20 ++++++++------------
1 files changed, 8 insertions(+), 12 deletions(-)
---
diff --git a/gtk/gtkdnd.c b/gtk/gtkdnd.c
index 88e9d41..396f14b 100644
--- a/gtk/gtkdnd.c
+++ b/gtk/gtkdnd.c
@@ -2785,22 +2785,20 @@ set_icon_helper (GdkDragContext *context,
}
else
{
- cairo_surface_t *surface;
+ cairo_surface_t *source, *surface;
cairo_pattern_t *pattern;
cairo_t *cr;
- GdkPixbuf *pixbuf;
gtk_widget_set_size_request (window, width, height);
- pixbuf = _gtk_icon_helper_ensure_pixbuf (helper, gtk_widget_get_style_context (window));
+ source = _gtk_icon_helper_ensure_surface (helper, gtk_widget_get_style_context (window));
surface = gdk_window_create_similar_surface (gdk_screen_get_root_window (screen),
CAIRO_CONTENT_COLOR,
- gdk_pixbuf_get_width (pixbuf),
- gdk_pixbuf_get_height (pixbuf));
+ width, height);
cr = cairo_create (surface);
cairo_push_group_with_content (cr, CAIRO_CONTENT_COLOR_ALPHA);
- gdk_cairo_set_source_pixbuf (cr, pixbuf, 0, 0);
+ cairo_set_source_surface (cr, source, 0, 0);
cairo_paint (cr);
cairo_set_operator (cr, CAIRO_OPERATOR_SATURATE);
cairo_paint (cr);
@@ -2812,16 +2810,14 @@ set_icon_helper (GdkDragContext *context,
cairo_surface_destroy (surface);
- if (gdk_pixbuf_get_has_alpha (pixbuf))
+ if (cairo_surface_get_content (source) & CAIRO_CONTENT_ALPHA)
{
cairo_region_t *region;
- surface = cairo_image_surface_create (CAIRO_FORMAT_A1,
- gdk_pixbuf_get_width (pixbuf),
- gdk_pixbuf_get_height (pixbuf));
+ surface = cairo_image_surface_create (CAIRO_FORMAT_A1, width, height);
cr = cairo_create (surface);
- gdk_cairo_set_source_pixbuf (cr, pixbuf, 0, 0);
+ cairo_set_source_surface (cr, source, 0, 0);
cairo_paint (cr);
cairo_destroy (cr);
@@ -2832,7 +2828,7 @@ set_icon_helper (GdkDragContext *context,
cairo_surface_destroy (surface);
}
- g_object_unref (pixbuf);
+ cairo_surface_destroy (source);
g_signal_connect_data (window,
"draw",
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]