From ac1cf1304b10ea099e701d00d6e9e25222411e5c Mon Sep 17 00:00:00 2001
From: Benedikt Meurer <benny@xfce.org>
Date: Mon, 20 Mar 2006 19:28:39 +0000
Subject: [PATCH] 2006-03-20	Benedikt Meurer <benny@xfce.org>

	* thunar/thunar-icon-renderer.c(thunar_icon_renderer_render): Render
	  the icon properly when the widget state is insensitive.




(Old svn revision: 20505)
---
 ChangeLog                     |  5 +++++
 thunar/thunar-icon-renderer.c | 20 ++++++++++++++++++++
 2 files changed, 25 insertions(+)

diff --git a/ChangeLog b/ChangeLog
index 5310bb2d6..3f63c884d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2006-03-20	Benedikt Meurer <benny@xfce.org>
+
+	* thunar/thunar-icon-renderer.c(thunar_icon_renderer_render): Render
+	  the icon properly when the widget state is insensitive.
+
 2006-03-18	Benedikt Meurer <benny@xfce.org>
 
 	* thunar-vfs/thunar-vfs-xfer.c: Make sure the user can always read and
diff --git a/thunar/thunar-icon-renderer.c b/thunar/thunar-icon-renderer.c
index b69d6dd71..778324184 100644
--- a/thunar/thunar-icon-renderer.c
+++ b/thunar/thunar-icon-renderer.c
@@ -354,6 +354,7 @@ thunar_icon_renderer_render (GtkCellRenderer     *renderer,
   ThunarFileIconState     icon_state;
   ThunarIconRenderer     *icon_renderer = THUNAR_ICON_RENDERER (renderer);
   ThunarIconFactory      *icon_factory;
+  GtkIconSource          *icon_source;
   GtkIconTheme           *icon_theme;
   GdkRectangle            emblem_area;
   GdkRectangle            icon_area;
@@ -451,6 +452,25 @@ thunar_icon_renderer_render (GtkCellRenderer     *renderer,
             }
         }
 
+      /* check if we should render an insensitive icon */
+      if (G_UNLIKELY (GTK_WIDGET_STATE (widget) == GTK_STATE_INSENSITIVE || !renderer->sensitive))
+        {
+          /* allocate an icon source */
+          icon_source = gtk_icon_source_new ();
+          gtk_icon_source_set_pixbuf (icon_source, icon);
+          gtk_icon_source_set_size_wildcarded (icon_source, FALSE);
+          gtk_icon_source_set_size (icon_source, GTK_ICON_SIZE_SMALL_TOOLBAR);
+
+          /* render the insensitive icon */
+          temp = gtk_style_render_icon (widget->style, icon_source, gtk_widget_get_direction (widget),
+                                        GTK_STATE_INSENSITIVE, -1, widget, "gtkcellrendererpixbuf");
+          g_object_unref (G_OBJECT (icon));
+          icon = temp;
+
+          /* release the icon source */
+          gtk_icon_source_free (icon_source);
+        }
+
       /* render the invalid parts of the icon */
       gdk_draw_pixbuf (window, widget->style->black_gc, icon,
                        draw_area.x - icon_area.x, draw_area.y - icon_area.y,
-- 
GitLab