diff options
author | Alexander Larsson <alexl@redhat.com> | 2013-06-26 16:34:53 +0200 |
---|---|---|
committer | Alexander Larsson <alexl@redhat.com> | 2013-07-03 14:39:26 +0200 |
commit | b6b24148fbfc5445a6d14c72f95bc151c665848d (patch) | |
tree | 03a252985c4be84fc6a7bd01816c3c17363541e0 | |
parent | 31fc70721e91d09ff7e3e7df62ce8f9c8c8eb037 (diff) | |
download | gtk+-b6b24148fbfc5445a6d14c72f95bc151c665848d.tar.gz |
GtkCellRendererPixbuf: Add surface property
-rw-r--r-- | gtk/gtkcellrendererpixbuf.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/gtk/gtkcellrendererpixbuf.c b/gtk/gtkcellrendererpixbuf.c index 19795b8143..e6a8f53976 100644 --- a/gtk/gtkcellrendererpixbuf.c +++ b/gtk/gtkcellrendererpixbuf.c @@ -17,6 +17,7 @@ #include "config.h" #include <stdlib.h> +#include <cairo-gobject.h> #include "gtkcellrendererpixbuf.h" #include "gtkiconfactory.h" #include "gtkiconhelperprivate.h" @@ -74,6 +75,7 @@ enum { PROP_PIXBUF, PROP_PIXBUF_EXPANDER_OPEN, PROP_PIXBUF_EXPANDER_CLOSED, + PROP_SURFACE, PROP_STOCK_ID, PROP_STOCK_SIZE, PROP_STOCK_DETAIL, @@ -168,6 +170,13 @@ gtk_cell_renderer_pixbuf_class_init (GtkCellRendererPixbufClass *class) P_("Pixbuf for closed expander"), GDK_TYPE_PIXBUF, GTK_PARAM_READWRITE)); + g_object_class_install_property (object_class, + PROP_SURFACE, + g_param_spec_boxed ("surface", + P_("surface"), + P_("The surface to render"), + CAIRO_GOBJECT_TYPE_SURFACE, + GTK_PARAM_READWRITE)); /** * GtkCellRendererPixbuf:stock-id: @@ -279,6 +288,9 @@ gtk_cell_renderer_pixbuf_get_property (GObject *object, case PROP_PIXBUF_EXPANDER_CLOSED: g_value_set_object (value, priv->pixbuf_expander_closed); break; + case PROP_SURFACE: + g_value_set_boxed (value, _gtk_icon_helper_peek_surface (priv->icon_helper)); + break; case PROP_STOCK_ID: g_value_set_string (value, _gtk_icon_helper_get_stock_id (priv->icon_helper)); break; @@ -311,6 +323,9 @@ gtk_cell_renderer_pixbuf_reset (GtkCellRendererPixbuf *cellpixbuf) switch (storage_type) { + case GTK_IMAGE_SURFACE: + g_object_notify (G_OBJECT (cellpixbuf), "surface"); + break; case GTK_IMAGE_PIXBUF: g_object_notify (G_OBJECT (cellpixbuf), "pixbuf"); break; @@ -356,6 +371,10 @@ gtk_cell_renderer_pixbuf_set_property (GObject *object, g_object_unref (priv->pixbuf_expander_closed); priv->pixbuf_expander_closed = (GdkPixbuf*) g_value_dup_object (value); break; + case PROP_SURFACE: + gtk_cell_renderer_pixbuf_reset (cellpixbuf); + _gtk_icon_helper_set_surface (priv->icon_helper, g_value_get_boxed (value)); + break; case PROP_STOCK_ID: gtk_cell_renderer_pixbuf_reset (cellpixbuf); _gtk_icon_helper_set_stock_id (priv->icon_helper, g_value_get_string (value), priv->icon_size); |