[gtk+/wip/baedert/symbolic-icons: 4/9] iconhelper: Safe whether the surface is symbolic



commit f5aef4e925ce1c56d03d468dcb6cb67c449363f7
Author: Timm Bäder <mail baedert org>
Date:   Fri Feb 5 09:30:24 2016 +0100

    iconhelper: Safe whether the surface is symbolic

 gtk/gtkiconhelper.c        |   11 +++++++++++
 gtk/gtkiconhelperprivate.h |    2 ++
 2 files changed, 13 insertions(+), 0 deletions(-)
---
diff --git a/gtk/gtkiconhelper.c b/gtk/gtkiconhelper.c
index 73f105f..9c87a8f 100644
--- a/gtk/gtkiconhelper.c
+++ b/gtk/gtkiconhelper.c
@@ -42,6 +42,7 @@ struct _GtkIconHelperPrivate {
 
   guint use_fallback : 1;
   guint force_scale_pixbuf : 1;
+  guint surface_is_symbolic : 1;
 
   cairo_surface_t *rendered_surface;
 };
@@ -205,6 +206,7 @@ gtk_icon_helper_init (GtkIconHelper *self)
 
   self->priv->icon_size = GTK_ICON_SIZE_INVALID;
   self->priv->pixel_size = -1;
+  self->priv->surface_is_symbolic = FALSE;
 }
 
 static void
@@ -419,6 +421,7 @@ ensure_surface_for_gicon (GtkIconHelper    *self,
                           gint              scale,
                           GIcon            *gicon)
 {
+  GtkIconHelperPrivate *priv = self->priv;
   GtkIconTheme *icon_theme;
   gint width, height;
   GtkIconInfo *info;
@@ -485,10 +488,12 @@ ensure_surface_for_gicon (GtkIconHelper    *self,
       surface = gdk_cairo_surface_create_from_pixbuf (destination, scale, gtk_widget_get_window 
(gtk_css_gadget_get_owner (GTK_CSS_GADGET (self))));
       icon_effect = _gtk_css_icon_effect_value_get (gtk_css_style_get_value (style, 
GTK_CSS_PROPERTY_ICON_EFFECT));
       gtk_css_icon_effect_apply (icon_effect, surface);
+      priv->surface_is_symbolic = FALSE;
     }
   else
     {
       surface = gdk_cairo_surface_create_from_pixbuf (destination, scale, gtk_widget_get_window 
(gtk_css_gadget_get_owner (GTK_CSS_GADGET (self))));
+      priv->surface_is_symbolic = TRUE;
     }
   g_object_unref (destination);
 
@@ -930,3 +935,9 @@ _gtk_icon_helper_set_pixbuf_scale (GtkIconHelper *self,
       break;
   }
 }
+
+gboolean
+gtk_icon_helper_surface_is_symbolic (GtkIconHelper *self)
+{
+  return self->priv->surface_is_symbolic;
+}
diff --git a/gtk/gtkiconhelperprivate.h b/gtk/gtkiconhelperprivate.h
index f4bdcd4..52d41f5 100644
--- a/gtk/gtkiconhelperprivate.h
+++ b/gtk/gtkiconhelperprivate.h
@@ -140,6 +140,8 @@ void     _gtk_icon_helper_set_force_scale_pixbuf (GtkIconHelper *self,
 
 void      gtk_icon_helper_invalidate (GtkIconHelper *self);
 
+gboolean  gtk_icon_helper_surface_is_symbolic (GtkIconHelper *self);
+
 G_END_DECLS
 
 #endif /* __GTK_ICON_HELPER_H__ */


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