[gnome-video-arcade] treeview: Fix favorite icon rendering.



commit b8755d54de94dc3f8385758af0326f2189a4a211
Author: Matthew Barnes <mbarnes redhat com>
Date:   Tue Jul 28 14:44:30 2015 -0400

    treeview: Fix favorite icon rendering.
    
    The icon for non-favorite games was supposed to be rendered as insensitive
    but still clickable.  This broke as some point in certain GTK3 themes like
    Adwaita, so new trickery is needed.
    
    https://bugzilla.gnome.org/704811

 src/gva-cell-renderer-pixbuf.c |   20 ++++++++++++++------
 1 files changed, 14 insertions(+), 6 deletions(-)
---
diff --git a/src/gva-cell-renderer-pixbuf.c b/src/gva-cell-renderer-pixbuf.c
index f3411cf..634a885 100644
--- a/src/gva-cell-renderer-pixbuf.c
+++ b/src/gva-cell-renderer-pixbuf.c
@@ -109,19 +109,27 @@ cell_renderer_pixbuf_render (GtkCellRenderer *cell,
                              const GdkRectangle *cell_area,
                              GtkCellRendererState flags)
 {
-        GvaCellRendererPixbufPrivate *priv;
-        gboolean sensitive;
+        GvaCellRendererPixbuf *pixbuf_cell;
+        GtkStyleContext *context;
+        GtkStateFlags state;
 
-        priv = GVA_CELL_RENDERER_PIXBUF_GET_PRIVATE (cell);
+        pixbuf_cell = GVA_CELL_RENDERER_PIXBUF (cell);
 
-        sensitive = gtk_cell_renderer_get_sensitive (cell);
-        gtk_cell_renderer_set_sensitive (cell, priv->active);
+        context = gtk_widget_get_style_context (widget);
+
+        gtk_style_context_save (context);
+
+        if (!pixbuf_cell->priv->active)
+                flags |= GTK_CELL_RENDERER_INSENSITIVE;
+
+        state = gtk_cell_renderer_get_state (cell, widget, flags);
+        gtk_style_context_set_state (context, state);
 
         /* Chain up to parent's render() method. */
         GTK_CELL_RENDERER_CLASS (gva_cell_renderer_pixbuf_parent_class)->
                 render (cell, cr, widget, background_area, cell_area, flags);
 
-        gtk_cell_renderer_set_sensitive (cell, sensitive);
+        gtk_style_context_restore (context);
 }
 
 static void


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