[Xfce4-commits] [xfce/thunar] 01/01: replaced gtk3 deprecation "gtk_style_render_icon". Since almost impossible to replace it with suggested "gtk_icon_theme_load_icon", a more simple approach is used now to render icons insensitive.

noreply at xfce.org noreply at xfce.org
Wed Nov 22 23:02:01 CET 2017


This is an automated email from the git hooks/post-receive script.

a   l   e   x       p   u   s   h   e   d       a       c   o   m   m   i   t       t   o       b   r   a   n   c   h       m   a   s   t   e   r   
   in repository xfce/thunar.

commit 6785723678c3e32cfe87e905d200aa70381ddcbc
Author: Alexander Schwinn <acs82 at gmx.de>
Date:   Wed Nov 22 23:00:13 2017 +0100

    replaced gtk3 deprecation "gtk_style_render_icon".
    Since almost impossible to replace it with
    suggested "gtk_icon_theme_load_icon", a more simple approach is used now
    to render icons insensitive.
---
 thunar/thunar-icon-renderer.c | 44 +++++++++++++++++++++++++------------------
 1 file changed, 26 insertions(+), 18 deletions(-)

diff --git a/thunar/thunar-icon-renderer.c b/thunar/thunar-icon-renderer.c
index 42b62f7..5338ef4 100644
--- a/thunar/thunar-icon-renderer.c
+++ b/thunar/thunar-icon-renderer.c
@@ -299,6 +299,30 @@ thunar_icon_renderer_get_preferred_height (GtkCellRenderer *renderer,
 
 
 static void
+thunar_icon_renderer_color_insensitive (cairo_t   *cr,
+                                        GtkWidget *widget)
+{
+  cairo_pattern_t *source;
+  GdkRGBA          *color;
+  GtkStyleContext *context = gtk_widget_get_style_context (widget);
+
+  cairo_save (cr);
+
+  source = cairo_pattern_reference (cairo_get_source (cr));
+  gtk_style_context_get (context, GTK_STATE_FLAG_INSENSITIVE, GTK_STYLE_PROPERTY_COLOR, &color, NULL);
+  gdk_cairo_set_source_rgba (cr, color);
+  gdk_rgba_free (color);
+  cairo_set_operator (cr, CAIRO_OPERATOR_MULTIPLY);
+
+  cairo_mask (cr, source);
+
+  cairo_pattern_destroy (source);
+  cairo_restore (cr);
+}
+
+
+
+static void
 thunar_icon_renderer_color_selected (cairo_t   *cr,
                                      GtkWidget *widget)
 {
@@ -356,7 +380,6 @@ 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;
@@ -449,23 +472,8 @@ thunar_icon_renderer_render (GtkCellRenderer     *renderer,
       g_object_unref (G_OBJECT (clipboard));
 
       /* check if we should render an insensitive icon */
-      if (G_UNLIKELY (gtk_widget_get_state (widget) == GTK_STATE_INSENSITIVE || !gtk_cell_renderer_get_sensitive (renderer)))
-        {
-          /* 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 (gtk_widget_get_style (widget), 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);
-        }
+      if (G_UNLIKELY (gtk_widget_get_state_flags (widget) == GTK_STATE_FLAG_INSENSITIVE || !gtk_cell_renderer_get_sensitive (renderer)))
+        thunar_icon_renderer_color_insensitive(cr,widget);
 
       /* render the invalid parts of the icon */
       thunar_gdk_cairo_set_source_pixbuf (cr, icon, icon_area.x, icon_area.y);

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Xfce4-commits mailing list