[gtk+] themingengine: apply image effects according to GtkCssImageEffect value



commit b6cf6d52eff7555903ea379ed77754798077d208
Author: Cosimo Cecchi <cosimoc gnome org>
Date:   Sun Aug 4 11:39:49 2013 +0200

    themingengine: apply image effects according to GtkCssImageEffect value
    
    Instead of only looking at the state flags.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=705443

 gtk/gtkthemingengine.c |   10 ++++++++--
 1 files changed, 8 insertions(+), 2 deletions(-)
---
diff --git a/gtk/gtkthemingengine.c b/gtk/gtkthemingengine.c
index d7466e6..ee9a1a4 100644
--- a/gtk/gtkthemingengine.c
+++ b/gtk/gtkthemingengine.c
@@ -2700,6 +2700,7 @@ gtk_theming_engine_render_icon_pixbuf (GtkThemingEngine    *engine,
   cairo_t *cr;
   cairo_surface_t *surface;
   gboolean wildcarded;
+  GtkCssImageEffect image_effect;
 
   G_GNUC_BEGIN_IGNORE_DEPRECATIONS;
   base_pixbuf = gtk_icon_source_get_pixbuf (source);
@@ -2735,7 +2736,11 @@ gtk_theming_engine_render_icon_pixbuf (GtkThemingEngine    *engine,
   if (!wildcarded)
     return scaled;
 
-  if (state & GTK_STATE_FLAG_INSENSITIVE)
+  image_effect = _gtk_css_image_effect_value_get
+    (_gtk_theming_engine_peek_property (engine, GTK_CSS_PROPERTY_GTK_IMAGE_EFFECT));
+
+  if (image_effect == GTK_CSS_IMAGE_EFFECT_DIM ||
+      state & GTK_STATE_FLAG_INSENSITIVE)
     {
       surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32,
                                            gdk_pixbuf_get_width (scaled),
@@ -2752,7 +2757,8 @@ gtk_theming_engine_render_icon_pixbuf (GtkThemingEngine    *engine,
                                            cairo_image_surface_get_height (surface));
       cairo_surface_destroy (surface);
     }
-  else if (state & GTK_STATE_FLAG_PRELIGHT)
+  else if (image_effect == GTK_CSS_IMAGE_EFFECT_HIGHLIGHT ||
+          state & GTK_STATE_FLAG_PRELIGHT)
     {
       surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32,
                                            gdk_pixbuf_get_width (scaled),


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