]> git.0d.be Git - empathy.git/commitdiff
cell-renderer-expander: fix rendering with GTK+3
authorCosimo Cecchi <cosimoc@gnome.org>
Thu, 19 May 2011 14:11:44 +0000 (10:11 -0400)
committerCosimo Cecchi <cosimoc@gnome.org>
Mon, 23 May 2011 13:55:26 +0000 (09:55 -0400)
There are basically three issues here:
- the renderer doesn't add the GTK_STYLE_CLASS_EXPANDER style class when
  rendering, which blocks the theme to apply the intended colors.
- the GtkStateFlags that were set on the context were using GTK_STATE_*
  instead of GTK_STATE_FLAG_*
- the flags set on the context were incomplete, as they were just using
  ACTIVE/NORMAL for expanded/collapsed and not SELECTED/FOCUSED/...

https://bugzilla.gnome.org/show_bug.cgi?id=650590

libempathy-gtk/empathy-cell-renderer-expander.c

index a38a0a5fb3fc12e7e9de4ee17e62199289694393..7ed62b41fe986c07d06af0ab44f07441611ea9df 100644 (file)
@@ -275,6 +275,7 @@ empathy_cell_renderer_expander_render (GtkCellRenderer      *cell,
        gint                            x_offset, y_offset;
        guint                           xpad, ypad;
        GtkStyleContext                 *style;
+       GtkStateFlags                    state;
 
        expander = (EmpathyCellRendererExpander *) cell;
        priv = GET_PRIV (expander);
@@ -292,11 +293,16 @@ empathy_cell_renderer_expander_render (GtkCellRenderer      *cell,
        style = gtk_widget_get_style_context (widget);
 
        gtk_style_context_save (style);
+       gtk_style_context_add_class (style, GTK_STYLE_CLASS_EXPANDER);
+
+       state = gtk_cell_renderer_get_state (cell, widget, flags);
 
        if (priv->expander_style == GTK_EXPANDER_COLLAPSED)
-               gtk_style_context_set_state (style, GTK_STATE_NORMAL);
+               state |= GTK_STATE_FLAG_NORMAL;
        else
-               gtk_style_context_set_state (style, GTK_STATE_ACTIVE);
+               state |= GTK_STATE_FLAG_ACTIVE;
+
+       gtk_style_context_set_state (style, state);
 
        gtk_render_expander (style,
                             cr,